Макет Qt на QMainWindow

Я разработал QMainWindow с QtCreator's дизайнер. Он состоит из центрального виджета по умолчанию (QWidget) который содержит QVBoxLayout со всеми другими виджетами в нем. Теперь все, что я хочу, это то, что QVBoxLayout автоматически занимает все пространство прямоугольника центрального виджета.

Как я могу это сделать? Я не нашел пригодного для использования свойства ни в свойствах центрального виджета, ни в QVBoxLayout's из них.

4 ответа

Решение

Вам не нужно создавать QVBoxLayout вручную. Просто выберите ваш центральный QWidget и нажмите кнопку макета.

альтернативный текст

Если вы хотите сделать это с помощью кода вместо использования QtCreatorВы можете установить макет в QWidget а затем установите QWidget как центральный виджет главного окна, вот так:

#include <QtGui>
#include <QWidget>
#include <QHBoxLayout>
#include "mainwindow.h"

MainWindow::MainWindow() {  

        // Set layout
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(myWidget1);
        layout->addWidget(myWidget2);

        // Set layout in QWidget
        QWidget *window = new QWidget();
        window->setLayout(layout);

        // Set QWidget as the central layout of the main window
        setCentralWidget(window);

}

Добавьте хотя бы один виджет на свой MainWindow, Затем выберите ваше окно, нажав на него и нажмите на VerticalLayout Кнопка в верхней части QTCreator, You Vertical Layout автоматически добавляется к центральному виджету и заполняет всю поверхность.

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

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

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