Как я могу расположить QDockWidgets, как показано на снимке экрана с использованием кода?

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

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 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам