2013-03-01 24 views
1

我的應用程序中有兩個瀏覽按鈕。 我需要爲這兩個按鈕執行功能browseButtonClickHandler()。 但問題是,我怎樣才能識別哪個按鈕被點擊? 我需要將瀏覽過的文件夾粘貼到文本字段。 通過ui編輯器創建信號和插槽。 我已經爲這兩個工作分配了它的功能。 但唯一的困難是識別按鈕。 請幫助我。多個按鈕的插槽

+0

一個不重要的解決方案是使用兩個以上槽的功能:'browseButton1ClickHandler(){button1Clicked(); browseButtonClickHandler();}'。但是,我的qt技巧非常糟糕,所以我必須閱讀文檔以獲得更好的解決方案。 – Zeta 2013-03-01 08:06:31

+0

如果需要創建兩個更多的插槽,那麼最好爲這兩個按鈕創建兩個單獨的插槽。我需要將其簡化爲單一功能。這就是爲什麼我問。 – 2013-03-01 08:10:03

回答

3

使用QObject * QObject::sender()來知道信號源自何處。您可以查看QSignalMapper。在該文獻中,它們都提到相同的例子作爲問題

http://doc.qt.digia.com/4.6/qsignalmapper.html#details

+0

哇! 它爲我工作... 'QObject * sender = QObject :: sender(); QMessageBox :: information(0,「Button」,sender-> objectName());' 得到按鈕名稱.. 非常感謝! – 2013-03-01 09:26:30

0

我會建議創建一個按鈕類的子類,它有一個索引字段和一個賦予此索引值的虛函數。 我假設在browseButtonClickHandler()你得到一個指向按鈕的指針,所以把它轉換到你的按鈕子類並獲得索引值。

+0

對不起,我不清楚,因爲我不是qt專家。我只是一個初學者。你的子類是什麼意思,請告訴我函數如何獲得指向按鈕的指針? – 2013-03-01 08:15:23

+0

你創建一個從'QButton'繼承的類,添加一個私有變量(例如'int buttonIndex'),創建一個具有int參數的構造函數。當你創建按鈕時,你必須在構造函數中指定索引。當你執行一個獲得這樣的按鈕作爲參數的函數時,你可以得到它的索引,例如用這樣的函數(把它放在繼承的類中):int getIndex(){return buttonIndex; }'。我假設你將這些按鈕與代碼放在一起,而不是用Qt Designer。 – Gandras 2013-03-01 09:25:24

2

使用QButtonGroup。也許這個鏈接可以幫助。
http://doc.qt.io/qt-4.8/qbuttongroup.html#id

+0

這是更清潔的方式。詳細闡述一下? – UmNyobe 2013-03-01 08:42:46

+0

是的,是的。選擇這些按鈕 - >右鍵單擊 - >分配到一個新的組按鈕。然後將buttonclicked()信號連接到插槽,例如connect(ui-> commandtype,SIGNAL(buttonClicked(int)),this,SLOT(currentType_response(int)));.完成了! :) – emylia87 2013-03-01 09:07:42