Ich habe eine Klasse, in der ich eine statische Variable als Speicher nutze. Verschiedene Klassen und Widgets erzeugen instanzen dieser Klasse und können die statische Variable verändern. Wird die statische Variable nun verändert, sollen alle Klassen, die eine Instanz der Speicherklasse erzeugt haben, den nun veränderten Wert anzeigen bzw. damit rechnen.
Wenn ich aber nun ein Signal aus der Speicherklasse aussende, wird dieses Signal nur von der Klasse empfangen, welche die änderung vorgenommen hat. Alle anderen Klassen empfangen das Signal natürlich nicht. Gibt es einen Weg, auch alle anderen Klassen über die Veränderung des Wertes zu informieren?
Signal aus allen Instanzen einer Klasse senden
Re: Signal aus allen Instanzen einer Klasse senden
Wenn sich deine Klasse ausschliesslich um diese Statische Variabel dreht, würde ich gleich von Anfang an eine Singleton-Klasse nehmen, anstelle normaler Klasseninstanzen. Dann hast du das Problem nicht mehr.
Falls diese Klasse jedoch auch noch andere, nicht-statische Members hat und du daher unbedingt mehrere Instanzen erzeugen musst, würde ich anstelle der Statischen Variabel eine Singleton-Klasse einsetzen und allenfalls mit der Signal-Weiterleitung arbeiten:
hth..
Falls diese Klasse jedoch auch noch andere, nicht-statische Members hat und du daher unbedingt mehrere Instanzen erzeugen musst, würde ich anstelle der Statischen Variabel eine Singleton-Klasse einsetzen und allenfalls mit der Signal-Weiterleitung arbeiten:
Code: Alles auswählen
Klasse::Klasse(...
{
connect(Singleton::instance(), SIGNAL(changed()), this, SIGNAL(changed()));
}
void Klasse::inc()
{
Singleton::instanc()->inc(); // jetzt wird Singleton::changed gefeuert und via Klasse::changed an alle anderen verteilt.
}
Re: Signal aus allen Instanzen einer Klasse senden
Vielen Dank für diesen Tipp. Ich habe den Rat mit der Singleton-Klasse beherzigt und es funktioniert nun exakt wie gewünscht.