4

我希望 Qt 窗口在右侧提供以下停靠小部件的排列。

替代文字 http://img72.imageshack.us/img72/6180/docksonside.png

Qt 允许您为指定位置(顶部、底部、左侧或右侧)的addDockWidget方法提供一个参数,但显然不能提供两个放置在同一侧的位置。QMainWindowQDockWidgets

这是添加停靠小部件的代码。这使用 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)

当这段代码用于将它们都添加到右侧时,一个在另一个之上,不像我制作的屏幕截图。我拍摄的方法是在启动程序后用鼠标将它们拖到那里,但我需要它以这种方式启动。

4

2 回答 2

8

您可以使用QMainWindow::splitDockWidget

从文档:

将第一个停靠小部件覆盖的空间分成两部分,将第一个停靠小部件移动到第一部分,并将第二个停靠小部件移动到第二部分。

方向指定空间的划分方式:Qt::Horizo​​ntal 拆分将第二个停靠小部件放置在第一个的右侧;Qt::Vertical 拆分将第二个停靠小部件放置在第一个下方。

您必须首先将QMainWindow::dockNestingEnabled设置为 true (但我猜您已经这样做了)。

于 2010-06-09T15:44:50.537 回答
6

我从未尝试过,但我认为您可以在将停靠小部件添加到主窗口时设置它的方向:

void QMainWindow::addDockWidget ( Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation )

于 2010-06-09T14:08:43.050 回答