【问题标题】:How can I position QDockWidgets as the screen shot shows using code?如何使用代码将 QDockWidgets 定位为屏幕截图所示?
【发布时间】:2011-03-01 16:32:20
【问题描述】:

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

alt text http://img72.imageshack.us/img72/6180/docksonside.png

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

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

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

【问题讨论】:

  • 截图被破坏了,这会影响问题的理解 - 可以重新上传它

标签: user-interface qt pyqt4 dockable


【解决方案1】:

您可以使用QMainWindow::splitDockWidget

来自文档:

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

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

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

【讨论】:

  • 这可能也可以,但我还没有尝试过。我敢打赌,这是使用鼠标重新定位码头的代码。
【解决方案2】:

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

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

【讨论】:

  • 实际上,我在文档中读到了这一点,但直到我看到你的问题才意识到它的用途。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2014-06-18
相关资源
最近更新 更多