Как я могу расположить QDockWidgets, как показано на снимке экрана с использованием кода? - PullRequest
4 голосов
/ 09 июня 2010

Я хочу, чтобы в окне Qt появилось следующее расположение док-виджетов справа.

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

Qt позволяет вам предоставить аргумент для addDockWidget метод QMainWindow для указания позиции (сверху, снизу, слева или справа), но, очевидно, не так, как два QDockWidgets, расположенные на одной стороне, будут расположены.

Вот код, который добавляет доквиджеты.он использует PyQt4, но он должен быть таким же для Qt с 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)

Когда этот код используется для добавления их обоих с правой стороны, один находится над другим, а не как снимок экрана, который я сделал,То, как я сделал этот снимок, это перетащил их туда мышью после запуска программы, но мне нужно, чтобы это началось таким образом.

Ответы [ 2 ]

8 голосов
/ 09 июня 2010

Вы можете использовать QMainWindow :: splitDockWidget .

Из документов:

Делит пространство, покрытое первым виджетом дока, на две части, перемещаетпервый док-виджет в первую часть и перемещает второй док-виджет во вторую часть.

Ориентация определяет, как разделяется пространство: Разделение Qt :: Horizontal помещает второй док-виджет справа отпервый;Qt :: Vertical split помещает второй док-виджет ниже первого.

Вы должны установить QMainWindow :: dockNestingEnabled в значение true первым (но я думаю, вы уже это сделали).

6 голосов
/ 09 июня 2010

Я никогда не пробовал, но, думаю, вы можете установить ориентацию виджета дока при добавлении его в главное окно:

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

...