可以將多個信號綁定到一個插槽(不是?)。那麼,有沒有辦法瞭解哪個小部件發送信號?我正在尋找類似於sender
的事件參數。請參閱.NET中的事件參數如何使用信號/插槽機制獲取發件人小部件?
回答
QObject::sender()
將完成這項工作。
是的,您可以將多個信號連接到一個插槽。在這種情況下,您可以使用QSignalMapper
來區分信號的來源。該解決方案僅限於無參數信號。你可以看到一個例子here。
使用QObject::sender()
在插槽中,像下面的例子:
void MainWindow::someSetupFunction(void)
{
...
connect(_foobarButton, SIGNAL(clicked()), this, SLOT(buttonPressedSlot()));
}
void MainWindow::buttonPressedSlot()
{
// e.g. check with member variable _foobarButton
QObject* obj = sender();
if(obj == _foobarButton)
{
...
}
// e.g. casting to the class you know its connected with
QPushButton* button = qobject_cast<QPushButton*>(sender());
if(button != NULL)
{
...
}
}
+1爲一個實際的例子。 – MDMoore313 2014-02-08 15:54:13
不是qobject_cast比普通dynamic_cast更好嗎? – elephant 2015-09-24 07:07:03
@ephant是的,正如http://doc.qt.io/qt-4.8/metaobjects.html上的描述。答案中應該改進。 – Johannes 2015-12-30 20:56:01
- 1. QRunnable發出信號並從插槽獲取發件人
- 2. Qt信號插槽:信號已發送,但未插入插槽
- 3. Perl的信號/槽機制
- 4. Qt插槽和信號。獲取插槽接收器對象
- 5. 獲取短信發件人的電話號碼,使用Twilio
- 6. QT信號/插槽
- 7. 信號和插槽
- 8. 信號插槽TabWidget
- 9. 信號和槽在多層UI部件
- 10. C++信號/插槽:插槽處理和最佳C++信號庫?
- 11. 在對象上使用信號/插槽
- 12. 當對話框中的任何小部件發出信號時,是否可以調用插槽?
- 13. 在Maven中,如何使用無人機插件複製文件?
- 14. Qt如何實現信號和插槽?
- 15. 如何將信號連接到插槽
- 16. boost如何實現信號和插槽?
- 17. 使用信號和插槽增量上傳文件
- 18. Qt:不通過信號和插槽機制恢復首選項
- 19. Qt連接信號插槽
- 20. PyQt4信號和插槽
- 21. c + + QPushButton信號和插槽
- 22. QT信號和插槽
- 23. PyQt4 QComboBox信號和插槽
- 24. PyQt信號和插槽
- 25. 信號和插槽PyQt
- 26. 級聯和信號/插槽
- 27. 信號和插槽QT
- 28. pyQt信號/插槽與QtDesigner
- 29. 使用新的Qt5信號/插槽機制連接QTcpSocket :: error()時編譯錯誤
- 30. 獲取觸發事件的小部件?
鏈接是死的... – MDMoore313 2014-02-08 15:53:47
固定鏈接。謝謝! – 2014-02-09 04:41:47
鏈接再次死亡= [ – Troyseph 2015-05-29 14:06:29