代码之家  ›  专栏  ›  技术社区  ›  Nathan

如何在屏幕截图显示使用代码时定位QDockWidget?

  •  4
  • Nathan  · 技术社区  · 14 年前

    我想要一个qt窗口来显示右边的dock小部件的如下排列。

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

    qt允许您为 addDockWidget 方法 QMainWindow 指定位置(上、下、左或右),但显然不是两个 QDockWidgets 将布置在同一侧。

    下面是添加Dock小部件的代码。这使用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 回复  |  直到 8 年前
        1
  •  6
  •   feedc0de RushPL    8 年前

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

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

        2
  •  8
  •   ekhumoro    8 年前

    你可以使用 QMainWindow::splitDockWidget .

    来自文档:

    将第一个Dock小部件覆盖的空间拆分为两部分,将第一个Dock小部件移动到第一部分,并将第二个Dock小部件移动到第二部分。

    方向指定如何划分空间:qt::Horizontal Split将第二个Dock小部件放置在第一个小部件的右侧;qt::Vertical Split将第二个Dock小部件放置在第一个小部件的下方。

    你必须设置 QMainWindow::dockNestingEnabled 先说实话(但我想你已经这么做了)。