可以将多个信号绑定到一个插槽(不是?)。那么,有没有办法了解哪个小部件发送信号?我正在寻找类似sender
.NET事件参数的东西
答案 0 :(得分:110)
在插槽中使用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 :(得分:74)
QObject::sender()
将完成这项工作。
答案 2 :(得分:5)
是的,您可以将多个信号连接到一个插槽。在这种情况下,您可以使用QSignalMapper
来区分信号的来源。该解决方案仅限于无参数信号。您可以看到示例here。