Hallo!
Ich habe das Problem, dass ich bei einer Klasse, die eigentlich nichts mit den Funktionen von Qt zu hat Signals&Slots verwenden möchte.
Wahrscheinlich muss ich die Klasse dann von einer Qt-Klasse ableiten.
Welche Klasse eignet sich dafür am meisten?
Also es handelt sich um eine selbsterstellte Klasse, der im Grunde nur die Fähigkeit fehlt Signals&Slots zu verwenden.
Nicht-Qt-Klasse signals&slots verwenden?
Von QObject erben und Q_OBJECT in die Klassendefinition schreiben.
http://doc.trolltech.com/4.7/signalsand ... ll-example
http://doc.trolltech.com/4.7/signalsand ... ll-example
VERWENDEN sollte auch komplett ohne QObject-ableiten gehen. Q_OBJECT (das Macro, was QObject-ableiten impliziert) ist nur nötig, wenn du selber SIGNALS senden oder SLOTS implementieren willst (in jener Klasse) - oder eben auch Properties, Anbindung an das Qt-Metaobject-Sytem halt.
Wenn es darum geht, ein Core-System ohne Qt-Abhängigkeit zu implementieren, kannst du auch da wo SIGNALS/SLOTS nötig sind, einen dünnen Wrapper um das Objekt legen, deine eigentliche Qt-Schicht kommuniziert dann mit dem Wrapper.
Kannst du mal sagen, was deine eigentliche Motivation/Problem ist?
Wenn es darum geht, ein Core-System ohne Qt-Abhängigkeit zu implementieren, kannst du auch da wo SIGNALS/SLOTS nötig sind, einen dünnen Wrapper um das Objekt legen, deine eigentliche Qt-Schicht kommuniziert dann mit dem Wrapper.
Kannst du mal sagen, was deine eigentliche Motivation/Problem ist?
Also ich habe insgesamt drei Klassen: einmal eine "Main-Klasse", die von QMainWindow abgeleitet ist, dann eine Klasse Thread, die von QThread abgeleitet ist und dann noch eine Klasse Parser.
Nun möchte ich aus der Klasse Parser ein Signal an die Main-Klasse senden, die dann Ausgaben auf der GUI macht.
In der Main-Klasse enthält eine Instanz der Klasse Thread. Und die Klasse Thread enthält eine Instanz der Klasse Parser.
Deshalb habe ich nun die Klasse Parser von QObject abgeleitet.
Nun möchte ich aus der Klasse Parser ein Signal an die Main-Klasse senden, die dann Ausgaben auf der GUI macht.
In der Main-Klasse enthält eine Instanz der Klasse Thread. Und die Klasse Thread enthält eine Instanz der Klasse Parser.
Deshalb habe ich nun die Klasse Parser von QObject abgeleitet.
-
Giesbert
- Beiträge: 33
- Registriert: 16. Oktober 2009 00:50
- Wohnort: Hessdorf bei Erlangen
- Kontaktdaten:
Hi,
wenn du mit Thread sund signals arbeitets, dann achte darauf, das die instanzen im richtigen thread erzeugt werden, bevor du ein connectr machst. Sonst kann es passieren, das die slots im falschen thread aufgerufen werden, oder benutze beim connect QueuedConnection.
Das kann sonst sehr unschöne Seiteneffekte haben.
wenn du mit Thread sund signals arbeitets, dann achte darauf, das die instanzen im richtigen thread erzeugt werden, bevor du ein connectr machst. Sonst kann es passieren, das die slots im falschen thread aufgerufen werden, oder benutze beim connect QueuedConnection.
Das kann sonst sehr unschöne Seiteneffekte haben.