C++ 在QMainWindow中以多列排列QDockWidgets

C++ 在QMainWindow中以多列排列QDockWidgets,c++,qt,user-interface,layout,qdockwidget,C++,Qt,User Interface,Layout,Qdockwidget,我有一个继承自的类。在构造器中,我将中心小部件设置为NULL,然后添加几个来创建一个仅由QDockWidgets组成的用户界面: UserWidget::UserWidget(QWidget * parent) : QMainWindow(parent) { this->setCentralWidget(NULL); // create Widgets for User communication e.g. PushButtons etc. // ... d

我有一个继承自的类。在构造器中,我将
中心小部件设置为
NULL
,然后添加几个来创建一个仅由
QDockWidgets
组成的用户界面:

UserWidget::UserWidget(QWidget * parent) : QMainWindow(parent)
{
    this->setCentralWidget(NULL);
    // create Widgets for User communication e.g. PushButtons etc.
    // ...
    dockWidget_ = new QDockWidget;
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
    dockWidget->setWidget(userWidget_);
    this->addDockWidget(Qt::RightDockWidgetArea);
现在,我添加了另一个QDockWidget,但我选择的不是
Qt::RightDockWidgetArea
,而是
Qt::LeftDockWidgetArea

    dockWidget_ = new QDockWidget;
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
    dockWidget->setWidget(userWidget2_);
    this->addDockWidget(Qt::LeftDockWidgetArea);
到目前为止,我的程序的外观与此类似:

继续添加另一个
QDockWidget

    dockWidget_ = new QDockWidget;
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
    dockWidget->setWidget(userWidget3_);
    this->addDockWidget(Qt::LeftDockWidgetArea /* or Qt::RightDockWidgetArea*/);
我最终在中间分裂了一个区域:

但我想将布局分成3列,类似于:


然而,我没有找到任何合适的方法来做到这一点。将区域设置为
Qt::TopDockWidgetArea
Qt::BottomDockWidgetArea
都不能提供所需的行为。我真的很感激这里的任何帮助

您只需使用以下功能:

在您的情况下,您可以将一个
QDockWidget
(我们称他为
dock1
)放在左侧,另外两个放在右侧(
dock2
dock3
),然后调用如下函数:

splitDockWidget(dock2, dock3, Qt::Horizontal);
splitDockWidget(dock2, dock3, Qt::Horizontal);