Подтвердить что ты не робот

Понимание механизмов компоновки форм в Qt

Qt имеет гибкий и мощный механизм компоновки для обработки представлений окон настольных приложений.

Но он настолько гибкий, что его почти невозможно понять, когда что-то пойдет не так и нуждается в тонкой настройке. И настолько мощный, что он может победить любого в своих попытках подавить мнение Qt о том, как должна выглядеть форма.

Итак, может ли кто-нибудь объяснить или предоставить статьи или источник механизмов позиционирования Qt?

Я пытаюсь заставить QLabel, QPushButton и QTableView, отмеченные символами подчеркивания в своих именах, в два раза выше QTextBrowser с verticalStretch = 1 ниже. Как я могу правильно обрабатывать высоту виджета?

. ui файл моей формы в документах google. Поиск "____" в именах, предварительный просмотр в QtDesigner

4b9b3361

Ответ 1

Макеты на самом деле легко понять "я думаю":)
Простое объяснение макетов можно найти в книге qt " программирование на языке С++ с QT 2nd edition

Что вы должны знать о макетах и ​​их политиках размера

  • Большинство виджетов Qt имеют политику размера. Эта политика размера указывает системе, как виджет должен растягиваться или сжиматься. Его достали из класса QSizePolicy. Политика размера имеет как вертикальные, так и горизонтальные компоненты.
  • В большинстве виджетов также есть подсказка размера. Этот подсказка размера сообщает системе о предпочтительных размерах виджетов
  • QSizePolicy имеет коэффициент растяжения, позволяющий виджетам расти с разной скоростью.

Я знаю только 4 политики размера

  • политика фиксированного размера. Размер виджета фиксирован и его нельзя растянуть. Он остается за подсказкой размера.
  • политика минимального размера - подсказка размера - это минимально возможный размер виджета, но при необходимости он может увеличиться.
  • Предпочтительная политика размера - виджет может уменьшаться или увеличиваться больше, чем подсказка размера.
  • политика расширения размера - виджет может уменьшаться или увеличиваться больше, чем его подсказка:)

Вы можете спросить,

В чем разница между предпочтительным и расширяющимся?
ответ: Представьте форму с двумя виджетами, один с предпочтительным, а другой с расширением. Затем добавляется дополнительное пространство для виджета с расширяющейся политикой. Виджет с предпочтительной политикой останется с подсказкой размера.

Я рекомендую (ПРЕДУПРЕЖДЕНИЕ: не эксперт:)) вы покупаете и читаете " программирование на языке С++ с помощью QT 2nd edition. В настоящее время я читаю его и делаю много смысла. Посмотрите на изображения и посмотрите, имеют ли они смысл.

Объяснение политик размера
Size policy explained

Простой пример
Это простой диалог с двумя кнопками, для которых показаны горизонтальные и вертикальные политики размеров, а также горизонтальное и вертикальное растягивание.

example

Вот предварительный просмотр с наименьшим размером. alt text

Вот еще один предварительный просмотр при большем размере alt text

[EDITED://добавлен пример подсказки размера]

ПОЧЕМУ ВЫ ДОЛЖНЫ БЫТЬ ОБЕСПЕЧЕНЫ О РАЗМЕЩЕНИИ
Вы можете видеть, что каждый виджет имеет sizeHint, что жизненно важно, потому что система макета QT всегда уважает sizeHint. Это только проблема, если размер виджета по умолчанию не совсем то, что вы хотите. Единственным способом решения этой проблемы является расширение (подкласс) виджета и повторная реализация его функции-члена sizeHint(). Пример - 1000 слов. Чтобы сэкономить место, см. Мой блог, где есть пример проекта.

Ответ 2

Вы можете использовать таблицы стилей QT для управления высотой виджетов и другие свойства легко настраиваемым способом.

http://doc.qt.io/archives/qt-4.7/stylesheet.html

Что касается макетов, вы должны использовать их мудро и сильно в сочетании с распорками, чтобы заставить виджеты вести себя точно так, как вы хотите.

http://doc.qt.io/archives/qt-4.7/designer-layouts.html