Действия нами созданы, и теперь мы можем перейти к построению системы меню с этими действиями.
01 void MainWindow::createMenus
02 {
03 fileMenu = menuBar->addMenu(tr("&File"));
04 fileMenu->addAction(newAction);
05 fileMenu->addAction(openAction);
06 fileMenu->addAction(saveAction);
07 fileMenu->addAction(saveAsAction);
08 separatorAction = fileMenu->addSeparator;
09 for (int i = 0; i < MaxRecentFiles; ++i)
10 fileMenu->addAction(recentFileActions[i]);
11 fileMenu->addSeparator;
12 fileMenu->addAction(exitAction);
В Qt все меню являются экземплярами класса
Сначала мы создаем меню File (файл) и затем добавляем к нему действия New, Open, Save и Save As (создать, открыть, сохранить и сохранить как). Мы вставляем разделитель для визуального выделения группы взаимосвязанных пунктов меню. Мы используем цикл
Мы сохранили указатель на один из разделителей. Это позволяет нам скрывать этот разделитель (если файлы не использовались) или показывать его, поскольку мы не хотим отображать два разделителя, когда между ними ничего нет.
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 (правка) включается подменю. Это подменю (как и меню, к которому оно принадлежит) является экземпляром класса
Теперь мы создаем меню Edit (правка), добавляя действия при помощи
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 вправо; в других случаях этот разделитель игнорируется.
01 void MainWindow::createContextMenu
02 {