2014-01-20 64 views
0

我在應用程序用戶的按鈕(QPushButton)上實現運行時菜單,當他點擊上傳按鈕時,必須在ftp和http之間進行選擇。獲取選擇的菜單項

QMenu menu(this); 
menu.addAction("ftp"); 
menu.addAction("http"); 
ui.mUploadBtn->setMenu(&menu); 
ui.mUploadBtn->showMenu(); 

我的疑問句是,我怎麼能知道用戶選擇選擇哪個或者是它們的任何函數來獲得。

三江源搭上了菜單的結果

回答

1

一種方法是做到這一點:

QAction* action = menu.exec(QCursor::pos()); 

然後你可以使用

action->text()==QString("ftp") 

要知道,如果用戶在「FTP點擊」。

所以由弗蘭克·奧斯特費爾德在評論中說,你也可以在你的類創建插槽,和菜單觸發動作信號連接到它:

connect(&menu, SIGNAL(triggered(QAction*)), this, SLOT(sl_OnMenuTriggered(QAction*))); 

void sl_OnMenuTriggered(QAction* _action) 
{ 
if(_action->text()=="ftp") ... 
} 

這是「不堵」的方式。

+3

或者連接到QMenu :: triggered(QAction *),以防您想使用showMenu()或其他非阻塞方式顯示菜單。 –

+0

menu.exec()按下上載按鈕後沒有在正確位置顯示菜單它顯示屏幕左上角的菜單 – bhupinder

+0

好的,你可以使用我在我的響應中介紹的第二種方式,或menu.exec(QCursor :: pos ()); –