2013-08-02 95 views
1

我終於要完成我的學校項目,並認爲在我的下拉菜單中有一個退出選項會很高興,但無論我嘗試什麼,我都無法使其工作。如果你能在你的空閒時間看看吧,我真的apprechiate它(或任何建議,你可能有)QT-菜單退出選項

void MainWindow::on_actionExit_triggered() 
{ 
    connect(this,SIGNAL(triggered()),MainWindow,SLOT(close())); 
} 

每次我嘗試調試它,它提供了以下錯誤信息:

error: expected primary-expression before ',' token

乾杯:Ryseth

+0

編輯:我已經嘗試過它的信號/槽連接手動連接,但它只是不會讓我... – Ryseth

+0

我有點被這個迷惑 - 是你的當調用'on_actionExit_triggered'函數?另外,如果'this'引用'MainWindow',它是否有'觸發'信號? –

+0

呵呵,顯然它應該有一個'triggered()'信號,但是它沒有像正常退出按鈕的情況那樣完成?我的意思是,我右鍵單擊退出菜單 - >轉到插槽 - >觸發(),然後只需告訴他(類似於上面提到的一個),當我點擊它(或觸發它)只需要MainWindow的'close()'插槽? – Ryseth

回答

9
  1. 您需要將對象指針傳遞給connect函數,而不是類名。您應該將MainWindow替換爲this。它將修復編譯錯誤。

  2. connect語句放在類構造函數中會更明智一些。您需要在初始化時執行connect,如果您希望它在任何時候用戶按下菜單項時都能正常工作。

  3. on_actionExit_triggered有特殊的名稱形式。一旦你創建了這樣一個名稱的插槽,Qt會自動將它連接到actionExit操作的triggered插槽(有關更多信息,請參見Automatic Connections)。所以根本不需要connect聲明。

  4. 當用戶按菜單項時將調用on_actionExit_triggered插槽。當然你需要在其中實施一些實現。例如:

    void MainWindow::on_actionExit_triggered() { 
        QApplication::quit(); 
    } 
    
+0

*特殊名稱形式*嗯?我從來不知道這件事! –

+0

,它確實有效。謝謝! :) – Ryseth

+2

@DrewMcGowen:http://qt-project.org/doc/qt-5.1/qtdesigner/designer-using-a-ui-file.html#automatic-connections –