Ответ 1
Вам не нужно создавать QVBoxLayout
вручную. Просто выберите центральный QWidget
и нажмите кнопку make-layout.
Я разработал конструктор QMainWindow
с дизайнером QtCreator's
. Он состоит из центрального виджета по умолчанию (a QWidget
), который содержит QVBoxLayout
со всеми другими виджетами в нем. Теперь все, что я хочу, состоит в том, что QVBoxLayout
автоматически занимает все пространство прямоугольников центрального прямоугольника.
Как я могу это сделать? Я не нашел никакого полезного свойства ни в свойствах центрального виджета, ни в QVBoxLayout's
.
Вам не нужно создавать QVBoxLayout
вручную. Просто выберите центральный QWidget
и нажмите кнопку make-layout.
Если вы хотите сделать это с помощью кода вместо 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
. Вертикальная компоновка автоматически добавляется в центральный виджет и заполняет всю поверхность.
Это уже ответили, но я лично предпочитаю, чтобы все элементы управления и макеты добавлены вручную в форму. Я не добавляю элементы управления в файлы классов, я просто подключаю сигналы/слоты, чтобы скрыть/показать виджеты, относящиеся к логике класса, внутри класса.
Чтобы вручную добавить макет к любому виджету, вы должны сначала добавить хотя бы один дочерний виджет/элемент управления. Это было не совсем понятно для меня, и я сначала попытался добавить макет.