Макет требуется в дизайнере, но не в приложении, написанном от руки?

Я новичок в Qt, и это довольно круто! Я занимался поиском / чтением / взломом и обучением большую часть дня на этом.

Я работаю над приложением, которое будет иметь изображение в области прокрутки в качестве основной цели. Пример просмотра изображений, где я начал. Этот пример выглядит "выложенным вручную", если хотите - то есть для него нет файлов форм.ui (он тривиален, так почему бы и нет).

Итак, вот в чем проблема - я хочу использовать конструктор для создания гораздо более сложного приложения. Если я начну заново с нового проекта и использую конструктор, изменение размера не будет работать, пока я не добавлю макет (используется вертикальный, все, кажется, чтобы решить проблему изменения размера) в форму.ui.

Дизайнер создает намного больше кода, чтобы сделать то же самое - мне все равно, это ведь инструмент IDE / генерации кода.

Однако мне не ясно, почему макет требуется, когда я использую конструктор, а не если я пишу его вручную. Я искал код для примера средства просмотра изображений, и похоже, что ЛЮБОЙ макет вообще не задействован, только 3 или 4 вложенных виджета (Main/Scroll/Label).

Макет по умолчанию в основном встроен?

1 ответ

Пример, на который вы ссылаетесь, использует QMainWindow, Этот виджет имеет свой собственный макет, потому что он имеет встроенную поддержку меню, панелей инструментов, виджетов дока и строки состояния:

Обычно для виджета, установленного в качестве центрального виджета, должен быть явно установлен макет для размещения собственных дочерних виджетов. Тем не менее, в вашем связанном примере, центральный виджет QScrollArea, который также имеет встроенный макет. Это все просто случайно, хотя. Подавляющее большинство виджетов не имеют встроенного макета, поэтому большинству графических интерфейсов потребуется явно добавить по крайней мере один макет, а для более сложных приложений обычно потребуется несколько.

Я бы сказал, что Qt Designer абсолютно необходим, когда дело доходит до экспериментов с макетами (особенно когда вы начинаете изучать Qt). Даже если вы на самом деле не используете файл пользовательского интерфейса, все равно очень полезно просто просмотреть код, который будет сгенерирован из него.

Другие вопросы по тегам