QMainWindow只有QDockWidgets,没有中央小部件

Ivo*_*Ivo 19 qt4 pyqt4

我们有一个窗口,里面有几个组件QDockWidget.理想情况下,我们希望所有组件可以停靠,但有一个组件可能始终可见.所以我们制作了中央小部件.

但是,这不允许我们创建tabifyDockWidget包含此中央窗口小部件的可停靠窗口小部件的标签式堆栈(您可以通过调用创建).因此,我们尝试创建一个没有中央窗口小部件的UI,但有几个QDockWidget.

我在手册中找不到任何迹象,QDockWidget或者QMainWindow说这是不允许的情况.我们在Qt Designer中尽可能地创建,并且它似乎要求您有一个中央窗口小部件 - 正如它在手动编辑XML后崩溃所示.

问题是:拥有一个QMainWindow只有QDockWidgets而没有中央窗口小部件是合法的吗?Qt Designer是因为一个bug而崩溃,还是告诉我这是一个坏主意,我需要停止这样做?

小智 14

Qt的文档说:

注意:不支持创建没有中央窗口小部件的主窗口.即使它只是一个占位符,您也必须拥有一个中央窗口小部件.

所以你可以隐藏空的中央小部件:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->centralWidget->hide();
}
Run Code Online (Sandbox Code Playgroud)

  • 中央小部件可能只是另一个可停靠的小部件吗? (4认同)

小智 10

如果我在"ui-> setupUi(this)"生成的行之后键入它,它对我有用.

MainWindow::setCentralWidget(NULL);
Run Code Online (Sandbox Code Playgroud)

如果是"legal"我不知道,但我知道它对我有用.

(我知道这是一个老问题,但仍然有效:))