【发布时间】:2016-09-28 00:55:19
【问题描述】:
我有一个继承自 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::LeftDockWidgetArea,而不是 Qt::RightDockWidgetArea:
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 都不能提供所需的行为。我真的很感激这里的任何帮助。
【问题讨论】:
标签: c++ qt user-interface layout qdockwidget