Qt Application Menu In Window and Mac

Application Menu

Application menu in different operator systems has different designed style. like Windows and Mac os, they are different.In the code, we can use different Macro ,eg:Q_OS_MAC and Q_OS_WIN

#ifdef Q_OS_MAC
void MainWindow::InitMenu()
{
    QMenuBar* mBar = menuBar();

    QMenu* mApp   = new QMenu(tr("App"),this);
    QMenu* mFile  = new QMenu(tr("&File"),this);

    mBar->addMenu(mApp);
    mBar->addMenu(mFile);

    /** In Mac,We should to set action role */
    QAction* actAbout = new QAction(tr("&About"),this);
    actAbout->setMenuRole(QAction::AboutRole);

    QAction* actSetApp = new QAction(tr("&Preference..."),this);
    actSetApp->setMenuRole(QAction::PreferencesRole);

    mApp->addAction(actAbout);
    mApp->addAction(actSetApp);

    QAction* actOpen = new QAction(tr("&Open Video Files..."),this);
    mFile->addAction(actOpen);

    connect(actOpen,&QAction::triggered,_player,&Player::StOpen);
    connect(actSetApp,&QAction::triggered,this,&MainWindow::StShowSetDlg);
}
#else
void MainWindow::InitMenu()
{
    QMenuBar* mBar = menuBar();

    QMenu* mFile  = new QMenu(tr("&File"),this);
    QMenu* mSet   = new QMenu(tr("&Setting"),this);
    QMenu* mAbout = new QMenu(tr("&About"),this);

    QAction* actOpen = new QAction(tr("&Open Video Files..."),this);
    QAction* actExit = new QAction(tr("&Exit out"),this);

    mFile->addAction(actOpen);
    mFile->addSeparator();
    mFile->addAction(actExit);

    QAction* actSetApp = new QAction(tr("&Setting App..."),this);
    mSet->addAction(actSetApp);

    mBar->addMenu(mFile);
    mBar->addMenu(mSet);
    mBar->addMenu(mAbout);

    connect(actOpen,&QAction::triggered,_player,&Player::StOpen);
    connect(actExit,&QAction::triggered,this,[=](){close();});
    connect(actSetApp,&QAction::triggered,this,&MainWindow::StShowSetDlg);
}
#endif

猜你喜欢

转载自www.cnblogs.com/zi-xing/p/8594799.html
今日推荐