gpt4 book ai didi

c++ - 在QMainWindow中将QDockWidgets排列为多列

转载 作者:行者123 更新时间:2023-12-01 14:44:48 25 4
gpt4 key购买 nike

我有一个从 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);

到目前为止,我的程序的外观类似于以下内容:

enter image description here

继续添加另一个 QDockWidget:
    dockWidget_ = new QDockWidget;
dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
dockWidget->setWidget(userWidget3_);
this->addDockWidget(Qt::LeftDockWidgetArea /* or Qt::RightDockWidgetArea*/);

我最终得到了一个在中间分开的区域之一:

enter image description here

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

enter image description here

但是,我没有找到任何合适的方法来执行此操作。将区域设置为 Qt::TopDockWidgetAreaQt::BottomDockWidgetArea都不提供所需的行为。我非常感谢您的帮助。

最佳答案

您只需要使用splitDockWidget()函数:

void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)

在您的情况下,您可以在左侧放置一个 QDockWidget(我们称其为 dock1),在右侧放置另外两个( dock2dock3),然后调用此函数:
splitDockWidget(dock2, dock3, Qt::Horizontal);

关于c++ - 在QMainWindow中将QDockWidgets排列为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com