我有一个继承自QMainWindow
的班级。在构造函数中,我将Central Widget
设置为NULL
,然后添加多个QDockWidgets
以创建仅由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
都不会提供所需的行为。我真的很感激这里的任何帮助。
答案 0 :(得分:3)
您只需使用splitDockWidget()函数:
void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
在您的情况下,您可以在左侧放置一个QDockWidget
(让他们称呼dock1
),在右侧放置另外两个dock2
和{{1 }}并调用这样的函数:
dock3