Разработка графического интерфейса с помощью библиотеки Qt3 | ||
---|---|---|
Пред. | Глава 6. Управление размещением виджетов. | След. |
Стыкуемые окна -- это окна, которые могут отстыковываться и пристыковываться к специальным областям стыковки. Самый яркий пример, пожалуй, это панели инструментов.
Объекты класса QMainWindow предоставляют в распоряжение программиста четыре области стыковки: вверху, внизу, слева и справа от центрального виджета. Когда создаются экземпляры класса QToolBar, они автоматически пристыковываются к верхней области окна-владельца.
Рисунок 6.11. "Плавающие" пристыковываемые окна.
Рисунок 6.12. QMainWindow с пятью стыкуемыми окнами.
dockWindow->setCloseMode(QDockWindow::Undocked);
Область стыковки -- QDockArea, имеет
свое контекстное меню, со списком всех пристыкованных окон и панелей
инструментов. После того, как отстыкованное окно было закрыто
пользователем, оно может быть восстановлено с помощью этого меню.
Рисунок 6.13. Контекстное меню QDockArea.
QToolBar *toolBar = new QToolBar(tr("Font"), this);
QComboBox *fontComboBox = new QComboBox(true, toolBar);
QSpinBox *fontSize = new QSpinBox(toolBar);
boldAct->addTo(toolBar);
italicAct->addTo(toolBar);
underlineAct->addTo(toolBar);
moveDockWindow(toolBar, DockBottom);
Эта панель будет выглядеть просто отвратительно, если
пользователь переместит ее в левую или правую область стыковки, из-за
QComboBox и QSpinBox. Чтобы предотвратить такую возможность, мы
можем запретить стыковку к левой и правой областям, вызовом
QMainWindow:: setDockEnabled():
setDockEnabled(toolBar, DockLeft, false);
setDockEnabled(toolBar, DockRight, false);
Если необходимо создать нечто более похожее на плавающее окно или
палитру инструментов, то можно напрямую обращаться к QDockWindow, вызывая метод setWidget(), чтобы добавить виджет в окно. Если
необходимо предоставить пользователю возможность изменять размеры
пристыкованного окна, то для этого можно воспользоваться функцией
setResizeEnabled().Если виджет должен изменять свой вид, в зависимости от того, к какой из областей стыковки он присоединен, то для этого необходимо перекрыть метод QDockWindow:: setOrientation() и выполять все необходимые действия в нем.
Если необходимо сохранять положение всех панелей инструментов и других стыкуемых окон, чтобы потом, на следующем запуске приложения восстанавливать его, можно написать код, который очень похож на тот, который мы разбирали ранее, используя оператор "<<" класса QMainWindow, для записи в файл, и ">>" -- для восстановления из файла.
Приложения, подобные Microsoft Visual Studio и Qt Designer очень широко используют стыкуемые окна, чтобы сделать интерфейс с пользователем более гибким.
Пред. | В начало | След. |
Области просмотра с прокруткой. | На уровень выше | Многодокументный интерфейс. |