Ответ 1
Макеты на самом деле легко понять "я думаю":)
Простое объяснение макетов можно найти в книге qt " программирование на языке С++ с QT 2nd edition
Что вы должны знать о макетах и их политиках размера
- Большинство виджетов Qt имеют политику размера. Эта политика размера указывает системе, как виджет должен растягиваться или сжиматься. Его достали из класса QSizePolicy. Политика размера имеет как вертикальные, так и горизонтальные компоненты.
- В большинстве виджетов также есть подсказка размера. Этот подсказка размера сообщает системе о предпочтительных размерах виджетов
- QSizePolicy имеет коэффициент растяжения, позволяющий виджетам расти с разной скоростью.
Я знаю только 4 политики размера
- политика фиксированного размера. Размер виджета фиксирован и его нельзя растянуть. Он остается за подсказкой размера.
- политика минимального размера - подсказка размера - это минимально возможный размер виджета, но при необходимости он может увеличиться.
- Предпочтительная политика размера - виджет может уменьшаться или увеличиваться больше, чем подсказка размера.
- политика расширения размера - виджет может уменьшаться или увеличиваться больше, чем его подсказка:)
Вы можете спросить,
В чем разница между предпочтительным и расширяющимся?
ответ: Представьте форму с двумя виджетами, один с предпочтительным, а другой с расширением. Затем добавляется дополнительное пространство для виджета с расширяющейся политикой. Виджет с предпочтительной политикой останется с подсказкой размера.
Я рекомендую (ПРЕДУПРЕЖДЕНИЕ: не эксперт:)) вы покупаете и читаете " программирование на языке С++ с помощью QT 2nd edition. В настоящее время я читаю его и делаю много смысла. Посмотрите на изображения и посмотрите, имеют ли они смысл.
Объяснение политик размера
Простой пример
Это простой диалог с двумя кнопками, для которых показаны горизонтальные и вертикальные политики размеров, а также горизонтальное и вертикальное растягивание.
Вот предварительный просмотр с наименьшим размером.
Вот еще один предварительный просмотр при большем размере
[EDITED://добавлен пример подсказки размера]
ПОЧЕМУ ВЫ ДОЛЖНЫ БЫТЬ ОБЕСПЕЧЕНЫ О РАЗМЕЩЕНИИ
Вы можете видеть, что каждый виджет имеет sizeHint, что жизненно важно, потому что система макета QT всегда уважает sizeHint. Это только проблема, если размер виджета по умолчанию не совсем то, что вы хотите. Единственным способом решения этой проблемы является расширение (подкласс) виджета и повторная реализация его функции-члена sizeHint(). Пример - 1000 слов. Чтобы сэкономить место, см. Мой блог, где есть пример проекта.