Макет 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 автоматически добавляется к центральному виджету и заполняет всю поверхность.
На этот вопрос уже дан ответ, но я лично предпочитаю, чтобы все элементы управления и макеты добавлялись в форму вручную. Я не добавляю элементы управления в файлы классов, я просто подключаю сигналы / слоты, чтобы скрыть / показать виджеты, относящиеся к логике в классе, внутри класса.
Чтобы добавить макет в любой виджет вручную, сначала необходимо добавить хотя бы один дочерний виджет / элемент управления. Это было не совсем понятно для меня, и я пытался сначала добавить макет.