QMainWindow上的Qt布局

时间:2009-10-02 11:15:55

标签: qt layout qt-designer

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

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

4 个答案:

答案 0 :(得分:64)

如果您想使用代码而不是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);

}

答案 1 :(得分:39)

您无需手动创建QVBoxLayout。只需选择您的中央QWidget,然后按下制作布局按钮。

alt text

答案 2 :(得分:13)

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

答案 3 :(得分:3)

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

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