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);