2012-01-31 3 views
0

Мне нравится обработка/макет по умолчанию, добавляющая виджет док-станции в главное окно с помощью addDockWidget(). В частности, следующее:Mimic Главное окно addDockWidget поведение макета для QDialog

  1. Использует QSplitter (я полагаю), который позволяет пользователю изменять размер виджета 2 док-станции и центрального виджета.
  2. Невозможно сжать виджет док-станции под подсказкой минимального размера.
  3. При перетаскивании размера всего окна виджет док-станции остается прежним (т. Е. Он отличается от перетаскивания сплиттера). Таким образом, центральный виджет растет при перетаскивании всего окна, а не док-станции и центрального виджета.

Я хотел бы подражать этому поведению, но на QDialog, так как я не могу просто вызвать addDockWidget(). Я не очень беспокоюсь о возможности перетащить виджет док-станции и опустить его на другие углы и т. Д. Мне просто нужна настройка QLayout, которая может выполнять вышеуказанные 3 вещи.

+1

Почему бы не использовать 'QMainWindow' вместо' QDialog'? Вы можете открыть столько QMainWindow, сколько хотите. –

+0

Это хороший момент. Есть ли недостатки в наличии нескольких основных окон, особенно открытых одновременно? –

+0

У этого есть хорошее обсуждение главного окна против диалогов, http://stackoverflow.com/questions/1442128/multiple-windows-in-pyqt4 –

ответ

0

Вы можете использовать QMainWindow вместо QDialog, чтобы получить функциональность dockwidget для диалога. Вы не должны замечать различий в исполнении между QMainWindow и QDialog.

+0

Я действительно не уверен, почему я думал, что для каждого приложения может быть только один QMainWindow. Наверное, я был смущен QApplication или чем-то еще. –

+0

Вы можете даже поставить 'QMainWindow' внутри другого виджета. –