Я занимаюсь разработкой приложения на C ++ с использованием Qt. Я хочу использовать пользовательский интерфейс Qt Designer в своем коде, поскольку он (в XML) не компилирует код и не жестко его кодирует. Я использую пример кода с этого URL.
В этом примере XML применяется к QWidget, а затем отображается QWidget. Как это можно реализовать с помощью QMainWindow, имея в виду, что я выбрал форму главного окна в Qt Designer, которая уже добавляет центральный виджет?
Есть как минимум два способа сделать это.
Используйте Qt Designer, чтобы добавить вертикальный макет к центральному виджету. Вы не можете сделать это для виджета без детей, поэтому просто добавьте кнопку, примените макет и удалите эту кнопку. Дайте вашему макету хорошее имя, например «Main_layout».
Скопируйте реализацию конструктора из примера и измените эти строки:
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(formWidget);
setLayout(layout);
к этому:
ui->main_layout->addWidget(formWidget);
Вам не нужно манипулировать с формой главного окна. Просто скопируйте реализацию конструктора из примера и измените те же строки о макете так:
setCentralWidget(formWidget);
Автоматически сгенерированный центральный виджет будет полностью заменен динамически загружаемой формой.
Других решений пока нет …