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

发布于 2024-09-05 03:07:59 字数 1011 浏览 10 评论 0原文

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

替代文本 http://img72.imageshack.us/img72/6180/docksonside.png< /a>

Qt 允许您向 QMainWindow 的 addDockWidget 方法提供参数来指定位置(上、下、左或右),但显然不是两个 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)

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

I want a Qt window to come up with the following arrangement of dock widgets on the right.

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

Qt allows you to provide an argument to the addDockWidget method of QMainWindow to specify the position (top, bottom, left or right) but apparently not how two QDockWidgets placed on the same side will be arranged.

Here is the code that adds the dock widgets. this uses PyQt4 but it should be the same for Qt with C++

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)

When this code is used to add both of them to the right side, one is above the other, not like the screen shot I made. The way I made that shot was to drag them there with the mouse after starting the program, but I need it to start that way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲影 2024-09-12 03:07:59

您可以使用 QMainWindow::splitDockWidget

来自文档:

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

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

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

You can use QMainWindow::splitDockWidget .

From the docs:

Splits the space covered by the first dock widget into two parts, moves the first dock widget into the first part, and moves the second dock widget into the second part.

The orientation specifies how the space is divided: A Qt::Horizontal split places the second dock widget to the right of the first; a Qt::Vertical split places the second dock widget below the first.

You have to set QMainWindow::dockNestingEnabled to true first (but I guess you already did that).

一身骄傲 2024-09-12 03:07:59

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

void QMainWindow::addDockWidget ( Qt::DockWidgetArea 区域, QDockWidget * dockwidget, Qt::Orientation 方向 )

I never tried it but I think you can set the orientation of the dock widget when adding it to the main window:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文