簡體   English   中英

使用Qt4的簡單菜單欄

[英]Simple menubar using Qt4

我正在嘗試使用QT 4.6制作簡單的GUI。 我做了一個代表菜單欄的分離類:

MenuBar::MenuBar()
{
    aboutAct = new QAction(tr("&About QT"), this);
    aboutAct->setStatusTip(tr("Show the application's About box"));
    connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));

    quitAct = new QAction(tr("&Quit"),this);
    quitAct->setStatusTip(tr("Exit to the program"));
    //connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

    menuFile = new QMenu("File");
    menuFile->addAction(quitAct);

    menuLinks = new QMenu("Links");

    menuAbout = new QMenu("Info");
    menuAbout->addAction(aboutAct);


    addMenu(menuFile);
    addMenu(menuLinks);
    addMenu(menuAbout);
}

我無法將quitAct的信號與主應用程序的退出插槽連接,可能是因為它在MenuBar類中不可見。

//connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

我該怎么做?

使用QApplication類的靜態instance()方法qApp獲取指向應用程序實例的指針。 請注意,這是一個指針,因此connect() qApp傳遞給connect() ,而不是&qApp

你有錯字 :)

在: connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

變量的名稱是qApp,而不是QApp。 順便說一句,balpha說了一切。 所以是:

connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));
要么
connect(quitAct, SIGNAL(triggered()), QApplication::instance(), SLOT(quit()));

  1. 您可以在MenuBar類中將quitAct變量設置為公共變量,然后從主窗口類中將menuBar-> quitAct連接到您的quit()函數,例如

    connect(menuBar-> quitAct,SIGNAL(clicked()),this,SLOT(quit()));

  2. 您可以在MenuBar類中創建公共SIGNAL,例如quitSignal(),並在發出該信號時從主窗口/對話框類將其連接到quit()函數。

  3. 您可能無法在主窗口/對話框類之外使用fo \\ rom的MenuBar類代碼,而只是將它們全部放在一個函數中,例如:

    void createMenuBar(){...}

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM