Il est possible de lier plus d'un signal à un emplacement (n'est-ce pas?). Alors, existe-t-il un moyen de comprendre quel widget envoie le signal? Je cherche quelque chose comme sender
argument d'événements dans .NET
QObject::sender()
fera le travail.
Utilisez QObject::sender()
dans l'emplacement, comme dans l'exemple suivant:
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 )
{
...
}
}
Oui, vous pouvez connecter plusieurs signaux à un emplacement. Dans ce cas, vous utiliserez QSignalMapper
pour différencier les sources des signaux. Cette solution est limitée aux signaux sans paramètres. Vous pouvez voir un exemple ici .