Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

Мы сохранили указатель на один из разделителей. Это позволяет нам скрывать этот разделитель (если файлы не использовались) или показывать его, поскольку мы не хотим отображать два разделителя, когда между ними ничего нет.

13 editMenu = menuBar->addMenu(tr("&Edit"));

14 editMenu->addAction(cutAction);

15 editMenu->addAction(copyAction);

16 editMenu->addAction(pasteAction);

17 editMenu->addAction(deleteAction);

18 selectSubMenu = editMenu->addMenu(tr("&Select"));

19 selectSubMenu->addAction(selectRowAction);

20 selectSubMenu->addAction(selectColumnAction);

21 selectSubMenu->addAction(selectAllAction);

22 editMenu->addSeparator;

23 editMenu->addAction(findAction);

24 editMenu->addAction(goToCellAction);

В меню Edit (правка) включается подменю. Это подменю (как и меню, к которому оно принадлежит) является экземпляром класса QPopupMenu. Мы просто создаем подменю путем указания this в качестве его родителя и вставляем его в то место меню Edit, где мы собираемся его расположить.

Теперь мы создаем меню Edit (правка), добавляя действия при помощи QMenu::addAction, как мы это делали для меню File, и добавляя подменю в нужную позицию при помощи QMenu::addMenu. Подменю, как и меню, к которому оно относится, имеет тип QMenu.

25 toolsMenu = menuBar->addMenu(tr("&Tools"));

26 toolsMenu->addAction(recalculateAction);

27 toolsMenu->addAction(sortAction);

28 optionsMenu = menuBar->addMenu(tr("&Options"));

29 optionsMenu->addAction(showGridAction);

30 optionsMenu->addAction(autoRecalcAction);

31 menuBar->addSeparator;

32 helpMenu = menuBar->addMenu(tr("&Help"));

33 helpMenu->addAction(aboutAction);

34 helpMenu->addAction(aboutQtAction);

35 }

Подобным же образом мы создаем меню Tools, Options и Help (инструменты, опции и помощь). Мы вставляем разделитель между меню Options и Help. В системах Motif и CDE этот разделитель сдвигает меню Help вправо; в других случаях этот разделитель игнорируется.

Рис. 3.5. Полоса главного меню в стилях систем Motif и Windows.

01 void MainWindow::createContextMenu

02 {

03 spreadsheet->addAction(copyAction);

04 spreadsheet->addAction(pasteAction);

05 spreadsheet->addAction(cutAction);

06 spreadsheet->setContextMenuPolicy(Qt::ActionsContextMenu);

07 }

Любой виджет в Qt может иметь связанный с ним список действий QAction. Для обеспечения в приложении контекстного меню мы добавляем необходимые нам действия в виджет Spreadsheet и устанавливаем политику контекстного меню виджета на отображение контекстного меню с этими действиями. Контекстные меню вызываются при щелчке правой клавишей мышки по виджету или при нажатии специальной клавиши клавиатуры, зависящей от платформы.

Рис. 3.6. Контекстное меню приложения Электронная таблица.

Более сложный способ обеспечения контекстного меню заключается в переопределении функции QWidget::contextMenuEvent, создании виджета QMenu, заполнении его требуемыми действиями и вызове для него функции exec.

01 void Mainwindow::createToolBars

02 {

03 fileToolBar = addToolBar(tr("&File"));

04 fileToolBar->addAction(newAction);

05 fileToolBar->addAction(openAction);

06 fileToolBar->addAction(saveAction);

07 editToolBar = addToolBar(tr("&Edif));

08 editToolBar->addAction(cutAction);

09 editToolBar->addAction(copyAction);

10 editToolBar->addAction(pasteAction);

11 editToolBar->addSeparator;

12 editToolBar->addAction(findAction);

  • Читать дальше
  • 1
  • ...
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: