Grundlegenede Signals/Slots Design-Frage

Alles rund um die Programmierung mit Qt
Antworten
diddely
Beiträge: 49
Registriert: 9. Juli 2008 16:19

Grundlegenede Signals/Slots Design-Frage

Beitrag von diddely »

Hi,

ich habe eine Mainwindow (GUI) Klasse A und eine Klasse B (Qobject).
Die MainWindow enthält eine Combox,
welche mit Werten gefüllt werden muss.
Die zu füllenden Werte sucht Klasse B mit der eigenen Methode getValues().

Meine bisherige Vorgehensweise (in C++) war so, dass ich ein Objekt von B in der GUI-Klasse A als private erzeugt habe.

In der Gui-Klasse A rufe ich dann im Ctor die Methode getValues() von Klasse B auf, damit es anfängt die Werte zu suchen.
Nach Abschluss der Methode, kann ich die gesammelten Werte aus B mit einer anderen Methode in A, also meine Combobox, übergeben.


Sollte man sowas generell mit Signals und Slots erledigen?


Wenn ja, wie würde sich die neue Vorgehensweise von meiner bisherigen abweichen?

Eventuell so?
Bei jedem einzelnen Wert, dass die Klasse B findet ein signal emitten?
Damit ein Slot in der Klasse A diesen empfängt und den Wert in die Combobox einträgt?
Diese Idee finde ich nicht so schön.
Da ich ehh ein Objekt von B in A habe, kann ich genauso gut eine Methode aufrufen um die Daten zu bekommen.


Bräuchte mal einen Schupser in die richtige Richtung :)


danke!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Kommt darauf an wie lange getValues() läuft. Dauert es 'lange' so ist es sicherlich sinnvoller ein finished() Signal zu verschicken und dann alle Daten in die Combobox zu füllen. Geht es schnell lohnt sich das alles nicht und ich würde direkt füllen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
diddely
Beiträge: 49
Registriert: 9. Juli 2008 16:19

Beitrag von diddely »

Ok, dann lass ich das beim direkten befüllen.

Habe ich es jetzt richtig verstanden? Bei solchen Sachen Signals einsetzen, wenn die Prozedur zeitintensiv ist ansonsten auf die klassische Art Daten übermitteln.
Würde ja heißen ich müsste im zeitintensiven Fall meine "Getvalues" in einem seperaten Thread laufen lassen. Stimmts?

Ich bin immer davon ausgegangen, dass in QT Daten jewlicher Art immer mit Signals und Slots hin und hergeschoben werden.

Danke nochmals!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das mit dem Thread ist richtig (hatte ich oben vergessen zu erwähnen).
Es wird nicht alles per Signal/Slot hin- und hergeschoben. Nur Dinge die nicht wirklich miteinander zu tun haben wie z.B. die Daten einer Http-Transaktion zu der verarbeitenden Klasse (der ist es ja egal wo es herkommt), die Aktion des Mausklicks auf einen Button zu der ausführenden Aktion, ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
diddely
Beiträge: 49
Registriert: 9. Juli 2008 16:19

Beitrag von diddely »

Ok, nochmals danke!
Antworten