gpt4 book ai didi

c++ - QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部

转载 作者:太空狗 更新时间:2023-10-29 22:59:16 46 4
gpt4 key购买 nike

在我当前的项目中,我实现了一个 Qt 应用程序,其中包含多个 MDI 窗体,其中包含多个 QDockWidget

应用程序大致如下所示:

Blueprint of my application

这是代码片段:

#include <QApplication>
#include <QMainWindow>
#include <QMdiArea>
#include <QDockWidget>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto window = new QMainWindow;
auto mdi = new QMdiArea;
window->setCentralWidget(mdi);

auto subWindowWidget = new QMainWindow;
mdi->addSubWindow(subWindowWidget);

auto dock1 = new QDockWidget("Dock1");
dock1->setWidget(new QLabel("Label1"));
dock1->setAllowedAreas(Qt::DockWidgetArea::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, dock1);

auto dock2 = new QDockWidget("Dock2");
dock2->setWidget(new QLabel("Label2"));
dock2->setAllowedAreas(Qt::DockWidgetArea::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, dock2);

window->show();
return app.exec();
}

我真的很满意程序的行为方式和功能。但是有一个缺点:即使我能够将停靠小部件停靠在左侧和右侧,我也无法将它们停靠在顶部和底部。

希望这里有人可以帮助我。我真的需要这个功能。

最佳答案

您没有设置 central widget到你的第二个 QMainWindow。要实现您想要的行为,请尝试将您的第一个 QDockWidget 设置为中央小部件。

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

auto window = new QMainWindow;
auto mdi = new QMdiArea;
window->setCentralWidget(mdi);

auto subWindowWidget = new QMainWindow;
mdi->addSubWindow(subWindowWidget);

auto dock1 = new QDockWidget("Dock1");
dock1->setWidget(new QLabel("Label1"));
dock1->setAllowedAreas(Qt::AllDockWidgetAreas);
subWindowWidget->setCentralWidget(dock1);

auto dock2 = new QDockWidget("Dock2");
dock2->setWidget(new QLabel("Label2"));
dock2->setAllowedAreas(Qt::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::BottomDockWidgetArea, dock2);

window->show();
return app.exec();
}

关于c++ - QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591979/

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