Il est possible de lier plus d'un signal à un slot (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 en .NET
Réponses
Trop de publicités?
Teh Suu
Points
1541
Utilisez QObject::sender()
dans la fente, 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 )
{
...
}
}
QObject::sender()
fera l'affaire.
Arnold Spence
Points
12759
Oui, vous pouvez connecter plusieurs signaux à une fente. Dans ce cas, vous utiliserez QSignalMapper
pour différencier les sources des signaux. Cette solution est limitée aux signaux sans paramètre. Vous pouvez voir un exemple aquí .