| |
![]() |
Разработка графического интерфейса с помощью библиотеки 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 очень широко используют стыкуемые окна, чтобы сделать интерфейс с пользователем более гибким.
Пред. | В начало | След. |
Области просмотра с прокруткой. | На уровень выше | Многодокументный интерфейс. |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |