【发布时间】:2013-09-22 00:58:20
【问题描述】:
我有两个 QDockWidget,当时只有一个可见,我通过 toggleViewAction() 进行管理。
我需要做的是,我希望两个 QDockWidget 位于相同的位置,具有相同的大小并停靠在相同的 dockWidgetArea 上,并且相对于其他 QDockWidgets 具有相同的方向和顺序。
我通过这段代码完成了大部分工作:
void myMainWindow::slotToggleDocks(QAction* action) {
if(action == viewDock1) {
Dock1->setFloating(Dock2->isFloating());
Dock1->resize(Dock2->size());
Dock1->restoreGeometry(Dock2->saveGeometry());
Dock1->move(Dock2->pos());
addDockWidget(dockWidgetArea(Dock2), Dock1);
...
Dock2->hide();
} else if(action == viewDock2) {
Dock2->setFloating(Dock1->isFloating());
Dock2->resize(Dock1->size());
Dock2->restoreGeometry(Dock1->saveGeometry());
Dock2->move(Dock1->pos());
addDockWidget(dockWidgetArea(Dock2), Dock1);
...
Dock1->hide();
}
}
此代码使两者具有相同的位置和大小并停靠在相同的区域(左、右、...),但它不能保证 Docks 与其他 QDockWidget 具有相同的布局停靠小部件区域。
如果这是之前的布局的含义:
Layout before http://holmez.net/qdockwidget/1.png
这是在切换之后:
Layout after toggling http://holmez.net/qdockwidget/2.png
这就是我想要的:
【问题讨论】:
-
我为你内联了图片,并添加了来自你的 cmets 的图片。然而,这似乎是一个死链接。如果您将 3.png 上传到该服务器,它应该可以工作。
-
我修复了第三张图片。谢谢蒂姆。
标签: qt qmainwindow qdockwidget