The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

6.5. Стыкуемые окна.

Стыкуемые окна -- это окна, которые могут отстыковываться и пристыковываться к специальным областям стыковки. Самый яркий пример, пожалуй, это панели инструментов.

Объекты класса QMainWindow предоставляют в распоряжение программиста четыре области стыковки: вверху, внизу, слева и справа от центрального виджета. Когда создаются экземпляры класса QToolBar, они автоматически пристыковываются к верхней области окна-владельца.

Рисунок 6.11. "Плавающие" пристыковываемые окна.


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

Рисунок 6.12. QMainWindow с пятью стыкуемыми окнами.


Чтобы кнопка закрытия отображалась на отстыкованном окне, необходимо вызвать setCloseMode():
dockWindow->setCloseMode(QDockWindow::Undocked);      
      
Область стыковки -- QDockArea, имеет свое контекстное меню, со списком всех пристыкованных окон и панелей инструментов. После того, как отстыкованное окно было закрыто пользователем, оно может быть восстановлено с помощью этого меню.

Рисунок 6.13. Контекстное меню QDockArea.


Стыкуемые окна должны быть потомками класса QDockWindow. Если вам нужна панель инструментов с кнопками и некоторыми другими виджетами, то для этой цели прекрасно подойдет QToolBar, который является наследником QDockWindow. Ниже приводится пример создания экземпляра класса QToolBar, на который помещаются QComboBox, QSpinBox и ряд дополнительных кнопок. Полученная панель инструментов размещается в нижней области стыковки:
  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 очень широко используют стыкуемые окна, чтобы сделать интерфейс с пользователем более гибким.


АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Подробнее о проведении акции вы можете прочитать на странице сайта.


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList