QMainWindow 上的 Qt 布局

Qt Layout on QMainWindow

我用 QtCreator's 设计器设计了一个 QMainWindow。它由默认的中央小部件(一个 QWidget)组成,其中包含一个 QVBoxLayout 以及其中的所有其他小部件。现在我想要的就是 QVBoxLayout 自动占据整个中央小部件矩形空间。

我该怎么做?我在中央小部件属性和 QVBoxLayout's 属性中都没有找到任何可用的属性。


如果你想用代码而不是使用 QTCreator 来做,你可以在 QWidget 中设置布局,然后将 QWidget 设置为主窗口的中央小部件,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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);

}


您不必手动创建 QVBoxLayout。只需选择您的中心 QWidget 并按下制作布局按钮。

alt


在您的 MainWindow 上添加至少一个小部件。然后通过单击选择您的窗口并单击 QTCreator 顶部的 VerticalLayout 按钮。您的垂直布局会自动添加到中央小部件并填充所有表面。


这已经得到解答,但我个人更喜欢将所有控件元素和布局手动添加到表单中。我不在类文件中添加控件,我只是在类中连接信号/插槽以隐藏/显示与类中的逻辑相关的小部件。

要手动向任何小部件添加布局,您必须首先添加至少一个子小部件/控件。这对我来说并不完全清楚,我试图先添加布局。