viele Connect's im Source Code

Alles rund um die Programmierung mit Qt
Antworten
andiK
Beiträge: 27
Registriert: 23. September 2005 20:29
Wohnort: Bruchsal

viele Connect's im Source Code

Beitrag von andiK »

Hallo zusammen,

In meinem aktuellen Programm erzeuge ich zur Laufzeit verschiedene Objekte (deren Klassen von QWidget abgeleitet sind), die miteinander verbunden werden können, damit sie Daten untereinander austauschen können. Den Datenaustausch habe ich mit Signal-Slot Connections realisiert.

Nun habe ich allerdings eine größere Anzahl verschiedener Objektklassen implementiert, die jeweils mehrere verschiedene Signale emittieren können und auch mehrere Slots besitzen,an die ein Signal-Sender "angeschlossen" werden kann.

Welche Input- und Output Schnittstellen meine Objektklassen besitzten habe ich jeweils in einer QStringList festgehalten.

Ich habe mir dann einen Code-Generator geschrieben, der meine Objektklassen-Definitionen liest und für jede mögliche Kombination eines Output-Signals mit jedem Input-Signals des selben Types eine Codezeile generiert:

Beispiel:

if( signalString == "output(int)" && slotString == "input(int)" ) connect( object1, SIGNAL(output(int) ) , object2, SLOT( input(int) ) );

...


So habe ich nun in meinem Source Code hunderte von Zeile mit diesen connect / disconnect statements, der ständig weiter wächst, da
ständig weitere Objekt-Typen hinzukommen. Der Code wird langsam etwas unhandlich und die Kompilierzeit wächst auch an.



Jetzt die Frage:

Gibt es irgendwelche raffiniertere Alternativen zu dem o.g. Konzept?

Kann ich iz.B. irgendwie während der Laufzeit diese Verbindungen connecten und disconnecten, indem ich die Signal und Slot
Namen in Variablen angeben kann?

Schön wäre z.B. :

QString signalString = "output(int)";
QString slotString = "input(int)";

connect( object1, SIGNAL( signalString ), object2, SLOT( slotString ) );

So geht's allerdings nicht, der Kompiler meckert


Freue mich über jede Idee...

Viele Grüße,

andiK
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: viele Connect's im Source Code

Beitrag von macman »

andiK hat geschrieben:So geht's allerdings nicht, der Kompiler meckert
Vielleicht weil connect const char* erwartet und kein QString.
andiK
Beiträge: 27
Registriert: 23. September 2005 20:29
Wohnort: Bruchsal

Beitrag von andiK »

Hallo Macman,

nein, ich hab' schon alles mögliche probiert, immer ohne Erfolg. Das Problem ist, das der Ausdruck SIGNAL( ) ein Macro ist, das vor dem Kompilieren vom MOC bereits umgesetzt wird.

andiK
Antworten