Как добавить QMenuBar в QWizardPage?
Я пытаюсь добавить QMenuBar в QWizardPage
QMenuBar *menuBar = new QMenuBar;
menuBar->setNativeMenuBar(false);
QMenu *helpMenu = new QMenu;
QAction *helpAction = new QAction;
helpMenu->addAction(helpAction);
menuBar->addMenu(helpMenu);
layout->addWidget(menuBar);
//Other widgets
setLayout(layout);
Но я не вижу строки меню.
Обычно я хочу добавить меню "Справка" с элементом "О продукте", чтобы отображать версию продукта и информацию о лицензировании, которые мы обычно видим во многих приложениях. Я нахожусь в Windows 10, использую QT 5.13.2
1 ответ
Решение
Решение состоит в том, чтобы использовать QMainWindow, где вы устанавливаете QMenuBar, и использовать QWizard как centralWidget:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
// menubar
QMenuBar * menuBar = w.menuBar();
QMenu *helpmenu = menuBar->addMenu("Help");
QAction *aboutaction = helpmenu->addAction("About product");
QObject::connect(aboutaction, &QAction::triggered, [&w](){
QMessageBox::information(&w, "About", "About");
});
QWizard *wizard = new QWizard;
// add pages
wizard->addPage(new QWizardPage);
wizard->addPage(new QWizardPage);
w.setCentralWidget(wizard);
w.show();
return a.exec();
}