Взаимное расположение виджетов, Не понимаю как действуют проперти |
Здравствуйте, гость ( Вход | Регистрация )
Взаимное расположение виджетов, Не понимаю как действуют проперти |
sz36 |
7.9.2014, 14:58
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 7.9.2014 Пользователь №: 4223 Спасибо сказали: 0 раз(а) Репутация: 0 |
Hi, All!
Я только взял в руки Qt, вопросы, может, идиотские, не обессудьте. Привык к C++Builder. Пишу под Андроид. 1) Есть у меня QHBoxLayout во всю ширину экрана и в нем 2 компонента: QLabel слева и кнопка справа. Текст QLabel меняется в процессе работы - туда выводится некое состояние. Когда текст короткий, все хорошо. Но когда он длиннее, QLabel расширяется и выпирает кнопку вправо, аж за край экрана. Причем, если после этого текст сокращается, то QLabel не возвращается в прежнее состояние. Как от этого избавиться? Сделать так, чтобы если текст не умещается в QLabel, он бы просто обрезался (справа)? Мои попытки менять разные проперти не привели к успеху. И вообще, алгоритм sizePolice для меня тайна, покрытая мраком, не понимаю. 2) Какого черта виджеты в дизайн-тайме в QtCreator'е ведут себя совсем не так, как в рантайме? В частности, в случае 1, в креаторе слишком длинный текст QLabel таки обрезается, но обрезается почему-то слева. |
|
|
Litkevich Yuriy |
7.9.2014, 20:22
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Есть у меня QHBoxLayout во всю ширину экрана Его нельзя сделать во всю ширину экрана, нет у него такой возможности. Можно только у родительского виджета, в который помещён этот компоновщик.Чтобы не уходило за пределы экрана, задай виджету максимальный размер. Какого черта виджеты в дизайн-тайме в QtCreator'е ведут себя совсем не так, как в рантайме? к сожалению такое бывает, это глюк QtCreator-а |
|
|
sz36 |
7.9.2014, 20:43
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 7.9.2014 Пользователь №: 4223 Спасибо сказали: 0 раз(а) Репутация: 0 |
Его нельзя сделать во всю ширину экрана, нет у него такой возможности. Можно только у родительского виджета, в который помещён этот компоновщик. Ну да, так и есть. Кнопка вылезает и за край родителя (QMainWindow) Чтобы не уходило за пределы экрана, задай виджету максимальный размер. Во-первых, непонятно у кого. У QHBoxLayout нет такого. А если у QLabel, то это вычислять надо - ширина экрана, минус отступы, минус ширина кнопки... А во-вторых, главное, все эти размеры в дизайн тайме неизвестны, поскольку неизвестна ширина экрана. Можно, конечно, попытаться в рантайме все это отрегулировать, но, опять же, непонятно когда. В конструкторе реальная ширина еще неизвестна, то есть надо евенты какие-то перегружать, в общем, геморрой. Более простого способа нет? Нафига нужны тогда эти sizePolicy, отступы и прочие проперти? |
|
|
Litkevich Yuriy |
7.9.2014, 20:59
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Во-первых, непонятно у кого. У QHBoxLayout нет такого. Компоновщик - не виджет, он не может жить самостоятельно, он может быть назначен виджету для управления положением дочерних виджетов.Подробнее о компоновке читай в доке Я подозреваю, что ты положил компоновщик на виджет в дизайнере просто перетянув его из списка виджетов. Корневой компоновщик в дизанере создаётся неочевидным способом - просто выделяются дочерние виджеты, а затем либо через конткстное меню либо на панели компоновок выбирается нужный тип компоновки. (подробнее в доке) Компоновщики же, из списка виджетов, давно нужно было убрать как вводящие в заблуждение. Но авторы Qt не захотели этого делать. |
|
|
sz36 |
8.9.2014, 18:06
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 7.9.2014 Пользователь №: 4223 Спасибо сказали: 0 раз(а) Репутация: 0 |
Подробнее о компоновке читай в доке Да читал я ту доку, нет там ответа. Вот мой xml (несущественные компоненты и проперти вырезаны) Раскрывающийся текст
А во вложении скриншоты, илюстрирующие проблему |
|
|
Litkevich Yuriy |
8.9.2014, 23:50
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 24.4.2024, 14:19 |