如何使用代码将QDockWidgets定位为屏幕截图所示?

4
我希望一个Qt窗口出现在右侧,具有以下停靠窗口的排列方式。 alt text http://img72.imageshack.us/img72/6180/docksonside.png Qt允许您向QMainWindow的addDockWidget方法提供一个参数来指定位置(顶部,底部,左侧或右侧),但显然不能指定放置在同一边上的两个QDockWidgets的排列方式。
下面是添加dock widgets的代码。这使用PyQt4,但对于C ++中的Qt应该是相同的。
self.memUseGraph = mem_use_widget(self)
self.memUseDock = QDockWidget("Memory Usage")
self.memUseDock.setObjectName("Memory Usage")
self.memUseDock.setWidget(self.memUseGraph)
self.addDockWidget(Qt.DockWidgetArea(Qt.RightDockWidgetArea),self.memUseDock)

self.diskUsageGraph = disk_usage_widget(self)
self.diskUsageDock = QDockWidget("Disk Usage")
self.diskUsageDock.setObjectName("Disk Usage")
self.diskUsageDock.setWidget(self.diskUsageGraph)
self.addDockWidget(Qt.DockWidgetArea(Qt.RightDockWidgetArea),self.diskUsageDock)

当使用此代码将它们同时添加到右侧时,一个会在另一个上方,而不像我所做的屏幕截图。我制作该截图的方法是在启动程序后用鼠标将它们拖到那里,但我需要它以那种方式启动。

2
截图已损坏,这影响了问题的理解。请重新上传。 - Skandix
2个回答

8
你可以使用QMainWindow::splitDockWidget
从文档中可以看到:
将第一个停靠窗口覆盖的空间分成两部分,将第一个停靠窗口移动到第一部分,并将第二个停靠窗口移动到第二部分。方向指定如何划分空间:Qt::Horizontal拆分将第二个停靠窗口放置在第一个停靠窗口右侧;Qt::Vertical拆分将第二个停靠窗口放置在第一个停靠窗口下方。
你必须先将QMainWindow::dockNestingEnabled设置为true(但我猜你已经这样做了)。

这也可能有效,但我还没有尝试过。我敢打赌这就是使用鼠标重新定位码头的代码基础。 - Nathan

6

其实,我在文档中读到过这个,但直到看到你的问题才意识到它的用途。 :) - Stephen Chu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接