我的應用程序中有兩個瀏覽按鈕。 我需要爲這兩個按鈕執行功能browseButtonClickHandler()
。 但問題是,我怎樣才能識別哪個按鈕被點擊? 我需要將瀏覽過的文件夾粘貼到文本字段。 通過ui編輯器創建信號和插槽。 我已經爲這兩個工作分配了它的功能。 但唯一的困難是識別按鈕。 請幫助我。多個按鈕的插槽
多個按鈕的插槽
回答
使用QObject * QObject::sender()
來知道信號源自何處。您可以查看QSignalMapper
。在該文獻中,它們都提到相同的例子作爲問題
哇! 它爲我工作... 'QObject * sender = QObject :: sender(); QMessageBox :: information(0,「Button」,sender-> objectName());' 得到按鈕名稱.. 非常感謝! – 2013-03-01 09:26:30
我會建議創建一個按鈕類的子類,它有一個索引字段和一個賦予此索引值的虛函數。 我假設在browseButtonClickHandler()
你得到一個指向按鈕的指針,所以把它轉換到你的按鈕子類並獲得索引值。
對不起,我不清楚,因爲我不是qt專家。我只是一個初學者。你的子類是什麼意思,請告訴我函數如何獲得指向按鈕的指針? – 2013-03-01 08:15:23
你創建一個從'QButton'繼承的類,添加一個私有變量(例如'int buttonIndex'),創建一個具有int參數的構造函數。當你創建按鈕時,你必須在構造函數中指定索引。當你執行一個獲得這樣的按鈕作爲參數的函數時,你可以得到它的索引,例如用這樣的函數(把它放在繼承的類中):int getIndex(){return buttonIndex; }'。我假設你將這些按鈕與代碼放在一起,而不是用Qt Designer。 – Gandras 2013-03-01 09:25:24
使用QButtonGroup。也許這個鏈接可以幫助。
http://doc.qt.io/qt-4.8/qbuttongroup.html#id
- 1. 連接按鈕mainwindows插槽
- 2. 對應一個帶有陣列插槽的按鈕
- 3. 同一個按鈕如何調用不同的插槽?
- 4. 等待按鈕點擊按鈕點擊移動按鈕到tkinter插槽
- 5. PySide一個插槽多個部件
- 6. PyQt5一個信號和多個插槽
- 7. Qt的按鈕被調用2個插槽和我只需要一個
- 8. Qt多個webview處理單插槽
- 9. Aurelia:模板中有多個插槽?
- 10. 多個(但不是全部)卡插槽
- 11. 調用兩次Qt的按鈕插槽,儘管禁用
- 12. 將插槽連接到QDialogButtonBox中的按鈕
- 13. 如何訪問插槽內的按鈕組成員?
- 14. 如何刪除Qt Widgets中插槽的按鈕
- 15. 多個按鈕按
- 16. 多個按鈕
- 17. 多個按鈕
- 18. 多個按鈕
- 19. 多個按鈕?
- 20. 防止連接到一個插槽(「真的」專用插槽)
- 21. 無法添加插槽並將其連接到按鈕
- 22. 合併所有按鈕,文本,檢查按鈕將事件變成一個單一的插槽
- 23. Qt轉發插槽/連接插槽到插槽?
- 24. 在qt中創建一個插槽,以對點擊按鈕作出反應
- 25. 按下多個Tkinter按鈕
- 26. 多個按鈕,每個按鈕都延伸到多個ViewControllers
- 27. 有多個按鈕
- 28. 與多個按鈕
- 29. 多個form_open按鈕
- 30. 多個zeroclipboard按鈕
一個不重要的解決方案是使用兩個以上槽的功能:'browseButton1ClickHandler(){button1Clicked(); browseButtonClickHandler();}'。但是,我的qt技巧非常糟糕,所以我必須閱讀文檔以獲得更好的解決方案。 – Zeta 2013-03-01 08:06:31
如果需要創建兩個更多的插槽,那麼最好爲這兩個按鈕創建兩個單獨的插槽。我需要將其簡化爲單一功能。這就是爲什麼我問。 – 2013-03-01 08:10:03