Для тех кто хочет добавить меню на форму, прошу сюда :)
Вначале как обычно создаём "GUI приложение Qt".
По умолчанию у нас на MainWindow уже есть QMenuBar, т.е. полоса, куда можно добавлять меню. Подключим необходимые классы, в нашем случае это класс меню, класс action (подпункт меню) и класс отладки:
Следующим этапом создадим отдельный метод класса для создания меню, дабы в случае написания крупного приложения код был читабелен.
Данный метод соответственно добавляем в ту форму, на которой нам необходимо создавать меню. В нашем случае это файл mainwindow.h.
Ну а теперь определим этот метод. Я вставлю весь исходник с комментариями.
void MainWindow::createMenus()
Но это лишь меню без каких либо элементов внутри. Добавим один пункт в меню File. Но прежде добавим слот, к которому в дальнейшем и подключим данное меню. Добавим в mainwindow.h слот showMessage()
Пускай по вызову данного слота в строку отладки выведется какое-нибудь сообщение.
Вначале как обычно создаём "GUI приложение Qt".
По умолчанию у нас на MainWindow уже есть QMenuBar, т.е. полоса, куда можно добавлять меню. Подключим необходимые классы, в нашем случае это класс меню, класс action (подпункт меню) и класс отладки:
#include <QMenu> #include <QAction> #include <QDebug>
Следующим этапом создадим отдельный метод класса для создания меню, дабы в случае написания крупного приложения код был читабелен.
private: void createMenus();
Данный метод соответственно добавляем в ту форму, на которой нам необходимо создавать меню. В нашем случае это файл mainwindow.h.
Ну а теперь определим этот метод. Я вставлю весь исходник с комментариями.
void MainWindow::createMenus()
{ QMenu * mnFile = new QMenu("File"); // создаём меню Файл QMenu * mnEdit = new QMenu("Edit"); // создаём меню Edit QMenu * mnService = new QMenu("Service"); // Меню Сервис QMenu * mnHelp = new QMenu("Help"); // Меню помощь ui->menuBar->addMenu(mnFile); // Добавляем пункты меню в menuBar, т.е. те, которые будут отображаться в гл. окне ui->menuBar->addMenu(mnEdit); ui->menuBar->addMenu(mnService); ui->menuBar->addMenu(mnHelp); }
Но это лишь меню без каких либо элементов внутри. Добавим один пункт в меню File. Но прежде добавим слот, к которому в дальнейшем и подключим данное меню. Добавим в mainwindow.h слот showMessage()
private slots: void showMessage();
Пускай по вызову данного слота в строку отладки выведется какое-нибудь сообщение.
void MainWindow::createMenus()
{
qDebug() << "menu clicked";
}Ну и последнее, нам необходимо добавить этот самый пункт в меню File и подключить его к слоту. В качестве конечного пункта меню (вызываемого) в Qt выступает QAction. Его создание и подключение выглядит следующим образом.
Не забудьте добавить createMenus() в конструктор класса mainWindow.void MainWindow::createMenus() { QMenu * mnFile = new QMenu("File"); // создаём меню Файл // ----------- здесь добавляем пункт меню и подключаем его к слоту---- QAction *msgAction = new QAction("show Message",mnFile); connect(msgAction, SIGNAL(triggered()), this, SLOT(showMessage())); mnFile->addAction(msgAction); QMenu * mnEdit = new QMenu("Edit"); // создаём меню Edit QMenu * mnService = new QMenu("Service"); // Меню Сервис QMenu * mnHelp = new QMenu("Help"); // Меню помощь ui->menuBar->addMenu(mnFile); // Добавляем пункты меню в menuBar, т.е. те, которые будут отображаться в гл. окне ui->menuBar->addMenu(mnEdit); ui->menuBar->addMenu(mnService); ui->menuBar->addMenu(mnHelp); }
опечатка
ОтветитьУдалитьне
void MainWindow::createMenus()
{
qDebug() << "menu clicked";
}
а MainWindow::showMessage()
В Widget'ах это не работает :-(
ОтветитьУдалитьадениум семена и врослые адениумы
ОтветитьУдалитьЭкзотические растения купить семена адениума и плюмерии