QMainWindow上的Qt布局

Mil*_*lan 34 layout qt qt-designer

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

我怎样才能做到这一点?我没有在中央小部件属性中找到任何可用的属性,也没有找到任何可用的属性QVBoxLayout's.

Jai*_*tes 69

如果你想用代码而不是使用它QtCreator,你可以在a中设置布局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);

}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢!但我不明白......创建新小部件的需求背后的原因是什么?仅仅允许将布局应用于主窗口是不是更直观? (3认同)
  • 如果`MainWindow`继承了`QMainWindow`那么你可以调用`centralWidget()-&gt;setLayout(layout);`。我在这里找到了这个(/sf/ask/2327573321/) (2认同)

Geo*_*lly 41

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

替代文字

  • 请注意,您必须在中央窗口小部件上至少有一个窗口小部件才能启用制作布局按钮 (22认同)

Pat*_*ola 13

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

  • 谢谢.我无法理解,因为我的MainWindow上没有任何小部件,所以你的答案最有帮助 (2认同)