Создание меню

Виды меню

Любое большое приложение с графическим интерфейсом обязательно содержит меню. Меню может быть разных видов:

В свою очередь меню может содержать разные разделы, например:

Класс QMenu

Основным виджетом для организации меню является класс QMenu. Для его использования необходимо подключить заголовочный файл QMenu. Один экземпляр класса QMenu соответствует одному возможному меню -- вертикальному списку из команд, разделителей, вложенных меню. Если главное меню приложения содержит несколько выпадающих вниз меню (например, "Файл", "Правка", "Настройка", "Помощь"), то для каждого из этих меню нужно создать собственный экземпляр класса QMenu.

При создании экземпляра класса QMenu ему можно указать в качестве параметра текстовую строку -- название меню. Например:

QMenu * fileMenu = new QMenu("&Файл");
QMenu * helpMenu = new QMenu("&Помощь");

Буква для быстрого вызова этого пункта меню выделена символом амперсанда.

Для добавления в меню команд используется метод addAction. Обычная команда меню должна быть связана с каким-то слотом, который будет активирован при вызове этого пункта меню. Например:

fileMenu->addAction("В&ыход", w, SLOT(close()));

У метода addAction три параметра: текстовая строка с названием пункта меню, указатель на объект, принимающий сигнал, описание слота этого объекта, принимающего сигнал. В данном случае мы подсоединили пункт меню к слоту close() главного окна приложения w.

Другой пример:

helpMenu->addAction("&AboutQt", &a, SLOT(aboutQt()));

В этом примере a -- объект класса QApplication.

Ещё одним параметром можно передать горячую клавишу, при нажатии на которую активируется команда меню. Например, так:

fileMenu->addAction("В&ыход", w, SLOT(close()), Qt::CTRL + Qt::Key_Q);

Для вставки разделителя между пунктами меню используется метод addSeparator().

Для вставки вложенного меню используется метод addMenu(submenu), параметр submenu -- указатель на вложенное меню.

Главное меню приложения -- виджет QMenuBar

Виджет QMenuBar используется для создания горизонтального меню из нескольких выпадающих вниз меню. Обычно используется в качестве главного меню приложения.

Для использования виджета необходимо подключить заголовочный файл QMenuBar.

Для создания главного меню приложение необходимо:

  1. Создать виджет QMenuBar.
  2. Добавить в него разные меню при помощи методов addMenu.
  3. Разместить виджет QMenuBar на главном окне приложения, вызвав метод setMenuBar для менеджера компоновки верхнего уровня данного окна.
QMenuBar * mainMenu = new QMenuBar;
mainMenu->addMenu(fileMenu);
mainMenu->addMenu(helpMenu);
QVBoxLayout * layout = new QVBoxLayout;
layout->setMenuBar(mainMenu);

Если же в качестве главного окна приложения используется класс QMainWindow, то разместить главное меню можно при помощи метода setMenuBar класса QMainWindow:

w->setMenuBar(mainMenu);