Doppeltes connect() verhindern?
-
CKassiopaia
- Beiträge: 38
- Registriert: 21. April 2009 16:42
Doppeltes connect() verhindern?
Hallo!
Kurze Frage: Kann ich vor einem connect() überprüfen, ob die Signal-Slot-Verbindung bereits besteht, dami ich doppelte Aktionen vermeide?
Als Alternative würde ich nach dem connect einfach überprüfen, ob der connect erfolgreich war und dies in einer Variable zwischenspeichern...
Danke!
Kurze Frage: Kann ich vor einem connect() überprüfen, ob die Signal-Slot-Verbindung bereits besteht, dami ich doppelte Aktionen vermeide?
Als Alternative würde ich nach dem connect einfach überprüfen, ob der connect erfolgreich war und dies in einer Variable zwischenspeichern...
Danke!
-
CKassiopaia
- Beiträge: 38
- Registriert: 21. April 2009 16:42
-
CKassiopaia
- Beiträge: 38
- Registriert: 21. April 2009 16:42
2 Möglichkeiten, die mir gerade einfallen:
1) eigene Methode für connect:
Und konsequent in deinem Projekt diese Methode verwenden.
2) In deiner Klasse einfach eine Methode setzen, die bei Klick auf die Checkbox ausgeführt wird:
Das sollte das sicherste sein. Und ganz sicher bist du, wenn der Slot, der bei einem enableFeature( true ) connected wird, noch private ist. So kann man nur über diese definierte Schnittstelle connecten, das Prüfen auf m_featureEnabled verhindert mehrfaches connecten.
Grüße
Franz
1) eigene Methode für connect:
Code: Alles auswählen
bool uniqueConnect( <argumente wie connect>) {
disconnect( ... );
connect( ... );
}2) In deiner Klasse einfach eine Methode setzen, die bei Klick auf die Checkbox ausgeführt wird:
Code: Alles auswählen
bool Dlg::enableFeature( bool on ) {
if( on && !m_featureEnabled ) {
m_featureEnabled = true;
connect( ... );
return true;
}
if( !on && m_featureEnabled ) {
m_featureEnabled = false;
disconnect( ... );
return true;
}
return false;
}Grüße
Franz
-
CKassiopaia
- Beiträge: 38
- Registriert: 21. April 2009 16:42