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