Имеется верхнее меню, в виде нескольких пунктов, где несколько пунктов меню представляют из себя кнопки, без вложенных пунктов. Полный код меню(имеется класс - окно, и у него в конструкторе все создается):
MainWindow::MainWindow(const QString name): ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle(name);
menuBar()->addMenu(scan = new QMenu(tr("Сканировать")));
menuBar()->addMenu(options = new QMenu(tr("Настройки")));
menuBar()->addMenu(about = new QMenu(tr("О программе")));
menuBar()->addMenu(info = new QMenu(tr("Использование")));
QAction* action = menuBar()->addAction(tr("Выход"));
connect(action, SIGNAL(triggered(bool)), this, SLOT(close()));
}
Однако, это событие не срабатывает так, как нужно. При запуске,у приложения имеется кнопка выход, но при нажатии на ней открывается список подменю-элементов, где есть элемент "активировать", который не действителен. Как надо правильно сделать единичный пункт меню?
Используйте метод quit(). Метод close закроет текущий виджет и само приложение, если это был последний видимый виджет.
Пример использования:
QPushButton *quitButton = new QPushButton("Quit");
connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
Если &app недоступен вам в текущем контексте можно заменить его на макрос qApp:
...
connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости