На этом шаге рассмотрим создание контекстного меню.
Визитной карточкой профессионального приложения является наличие контекстного меню. Контекстное меню — это меню, которое открывается при нажатии правой кнопки мыши. Для его реализации, как и в случае всплывающего меню, используется класс QMenu. Отличие состоит лишь в том, что это меню не присоединяется к виджету QMenuBar.
Любой виджет в Qt может иметь связанный с ним список действий QAction. Для обеспечения в приложении контекстного меню мы добавляем необходимые нам действия в виджет Spreadsheet и устанавливаем политику контекстного меню виджета на отображения контекстного меню с этими действиями. Контекстные меню вызываются при щелчке правой клавишей мыши по виджету или при нажатии специальной клавиши клавиатуры, зависящей от платформы. Контекстное меню приложения Электронная таблица показано на рис. 1.
Рис.1. Контекстное меню приложения Электронная таблица
void MainWindow::createContextMenu() { spreadsheet->addAction(cutAction); spreadsheet->addAction(copyAction); spreadsheet->addAction(pasteAction); spreadsheet->setContextMenuPolicy(Qt::ActionsContextMenu); }
Более сложный способ обеспечения контекстного меню заключается в переопределении функции QWidget::contextMenuEvent(), создании виджета QMenu, заполнении его требуемыми действиями и вызове для него функции ехес().
На следующем шаге рассмотрим создание панели инструментов.