PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Plugins mit QT?



TheDodger
06-07-2003, 05:18
Hat sich schon mal jemand intensiver mit der Plugin Schnittstelle von QT auseinandergesetzt?
Das benutzen von Plugins in KDE läuft ja über deren Wrapper-Klasse relativ einfach (wenn man's erstmal verstanden hat, nehh anda_skoa? :D )
Allerdings würde ich solche Sachen auch gern ohne KDE Abhängigkeit mal machen wollen ...

anda_skoa
06-07-2003, 20:50
Ich hab schon fertige Pluginschnittstellen von Qt benutzt, WidgetPlugins und StylePlugins

Aber noch nichts selber mit QLibrary oder ählichem gemacht.

Ciao,
_

TheDodger
07-07-2003, 10:03
anda_skoa ... :D wer auch sonst ...

Hmm, damit habe ich auch schon gearbeitet, aber QLibrary eben noch nicht.
Das wäre mal interessant ... ein HowTo habe ich leider nirgends finden können ...

anda_skoa
07-07-2003, 14:45
Man könnte in den Sourcen der Qt Plugins nachsehen :)

Ich nehme an, dass diese Qt Export Macro ein bestimmtest Symbol erzeugt, eine C Funktion, die dann die exportierte Klasse erzeugt und zurück gibt.

Ciao,
_

TheDodger
11-07-2003, 07:18
Original geschrieben von anda_skoa
Man könnte in den Sourcen der Qt Plugins nachsehen :)

Habe ich getan ... aber so richtig steig ich da nicht durch! :-(

Man müsste das ganze doch wie bei KDE aufziehen ... eigen LibraryFactory .... etc.
Allerdings steck ich da nicht so tief in der Materie drin, da bräuchte ich etwas Hilfe zu.
Der Bedarf sollte doch eigentlcih da sein, oder?



Ich nehme an, dass diese Qt Export Macro ein bestimmtest Symbol erzeugt, eine C Funktion, die dann die exportierte Klasse erzeugt und zurück gibt.

Ich eigentlich auch

anda_skoa
11-07-2003, 09:18
Für GPL gäbe es da KoreLib http://www.thekompany.com/projects/korelib/

LGPL könnte man sich vielleicht aus den entsprechenden Teilen der KDE libs bauen.

Die Qt Plugins sind ansich schon die Factories, denn sie haben Methoden um eine Liste der enthaltenen Komponenten zu erhalten und andere, um sie zu instanzieren.

Suchen tut Qt seine Plugins über hardcodierte Unterverzeichnisse in konfigurierbaren Verzeichnissen.

Das Export Macro kanns eigentlich nicht sein, das wird unter Unix nur defined, aber ohne Inhalt und wird nur unter Win32 benötigt.

Vielleicht macht da der MOC etwas.

Ciao,
_

TheDodger
11-07-2003, 09:30
Original geschrieben von anda_skoa
Für GPL gäbe es da KoreLib http://www.thekompany.com/projects/korelib/

Ja, die hab ich mittlerweile auch gefunden. Aber GPL wird es wohl leider nicht werden. Eher LGPL ...


LGPL könnte man sich vielleicht aus den entsprechenden Teilen der KDE libs bauen.

urgs, da kommt ja arbeit auf mich zu ...


Die Qt Plugins sind ansich schon die Factories, denn sie haben Methoden um eine Liste der enthaltenen Komponenten zu erhalten und andere, um sie zu instanzieren.

Suchen tut Qt seine Plugins über hardcodierte Unterverzeichnisse in konfigurierbaren Verzeichnissen.

Das Export Macro kanns eigentlich nicht sein, das wird unter Unix nur defined, aber ohne Inhalt und wird nur unter Win32 benötigt.

Vielleicht macht da der MOC etwas.

Jetzt muß ich da nur noch durchsteigen!

Danke schon mal für die Tipps!

anda_skoa
11-07-2003, 09:38
Original geschrieben von TheDodger
Jetzt muß ich da nur noch durchsteigen!

Danke schon mal für die Tipps!

Hab noch bischen weiter geforscht :)

Die Basisklasse des QWidgetPlugins ist das QGPlugin.

Dessen Header ist ein internal Header, der zum QCom Teil gehört (ders ja leider wegen Problemen nicht mehr ins Qt3 geschafft hat)

Dort scheint das extern "C" Zeug zu stehen, alles in Haufen von Preprozessor Macros.

Ciao,
_

TheDodger
11-07-2003, 11:21
Also, ich habe ein uralt-projekt zum testen von plugins wiedergefunden.
Ich musste das ganze nur grade eben unter windows zum laufen kriegen, sollte aber auch so ohne weiteres unter linux laufen.
Das Problem, welches ich dabei hatte, war das senden von commandos an die einzelnen plugins, da ist mein programm immer abgestürzt und ich hab den fehler nicht finden können. :(

Vielleicht entdeckt ja jemand anderes denselben?

gescannt werden die plugins schon, das integrieren in die application musste ich weglassen, weil ich jetzt dafür keine zeit hab :(
ich muß nach karlsruhe ;)

TheDodger
14-07-2003, 07:27
Also diese Version lief definitiv nicht unter Linux, diese hier schon.
BTW. so wie es aussieht, lag es wahrscheinlich nicht an meiner Dummheit, sondern daran, das wir im Ursprünglichem Projekt das ganze als MDI ausgelegt hatten.
Bislang stelle ich zwar noch keine Plugins dar, aber ausgelegt hab ich es im Moment für die Benutzung eines QWidgetStack 's.
Mal sehen, wie es funktioniert, sobald ich die Plugins richtig benutze ...

TheDodger
14-07-2003, 23:03
Nein, es liegt doch an meiner Blödheit. :-(

Also bislang kann ich die Plugins ansprechen und deren Funktionen nutzen.
Aber sobald ich versuche, die Plugins in einen QWidgetStack einzufügen klappt gar nicht's mehr! :(

Hat keiner eine Idee?

TheDodger
15-07-2003, 09:21
So, wie es aussieht, klappt es. Zumindest unter Linux ;)
Ich hab hier kein Windowscompilier & -QT zum testen ... nur in der Firma ...

Das einzigste Problem, was ich noch habe, wie unterscheide ich die einzelnen Plugins und hole die im QWidgetStack nach vorn ...

Die aktuellen Sourcen der Testapp liegen auf : http://darkcity.homeip.net/content/download/plugin-test.tar.bz2

TheDodger
15-07-2003, 23:00
Mit Hilfe von anda_skoa (wem auch sonst? :D ) hab ich das Problem lösen können.
Ich hänge die Demo-App unten dran, falls doch noch jemand interesse haben sollte ...

Ich will sie morgen aufräumen und dokumentieren.
Dann kann man sie auch unter http://darkcity.homeip.net runterladen.