[Qt4] Plugins / Modulare Programmierung
Verfasst: 5. Juni 2006 19:20
Hallo zusammen,
Ich suche Anregungen zu einer mir aktuell vorliegenden Problemstellung (die Forenbeiträge diesbezüglich habe ich schon durchforstet).
Einige Rahmenbedingungen der Problemstellung:
Entwickelt wird unter Linux (g++ Kompiler) mit Qt4. Die Anwendung soll letzten Endes aber plattformunabhängig sein.
Die Aufgabe:
Eine Anwendung soll dynamisch Module laden können. Diese Module implementieren eine Funktionalität und können eigene Fenster (Widgets) zur Visualisierung mitbringen (diese würden hauptsächlich der Parametrisierung der Funktionalität dienen). Tun sie dies nicht, ist eine Standardvisualisierung darzustellen.
Die Idee:
Das Modul wird mit dem Qt - Pluginsystem realisiert.
Das Problem:
Das Modul-Interface hätte im aktuellen Stand einige Template-Funktionen (siehe Design Pattern nach Gamma et al) , mehrere abstrakte Methoden (welche quasi zum "Füllen" der Template-Funktionen implementiert werden müssen) und einige virtuelle Methoden (hauptsächlich für GUI-Sachen). Das Problem dabei ist, dass ich die virtuellen Funktionen der Schnittstelle im Header implementieren muss, damit der Qt - PluginLoader die kompilierten Plugins auch als solche erkennt (eine Implementierung im C++ File ist nicht möglich. Der PluginLoader behauptet dann, es wäre kein Plugin). Ich empfinde das als unsauber. Die Funktionen sollen aber virtuell sein, damit Kindklassen sie überschreiben können.
Die Fragen:
1.) Hatte jemand bereits ein ähnliches Problem und kann mir sagen, warum ich die virtuellen Methoden im Header implementieren muss um ein funktionierendes Plugin zu bekommen? Oder gibt es evtl.
2.) bereits existierende Ansätze für ein solch modulares GUI Konzept?
Vielen Dank und beste Grüße,
Eric
Ich suche Anregungen zu einer mir aktuell vorliegenden Problemstellung (die Forenbeiträge diesbezüglich habe ich schon durchforstet).
Einige Rahmenbedingungen der Problemstellung:
Entwickelt wird unter Linux (g++ Kompiler) mit Qt4. Die Anwendung soll letzten Endes aber plattformunabhängig sein.
Die Aufgabe:
Eine Anwendung soll dynamisch Module laden können. Diese Module implementieren eine Funktionalität und können eigene Fenster (Widgets) zur Visualisierung mitbringen (diese würden hauptsächlich der Parametrisierung der Funktionalität dienen). Tun sie dies nicht, ist eine Standardvisualisierung darzustellen.
Die Idee:
Das Modul wird mit dem Qt - Pluginsystem realisiert.
Das Problem:
Das Modul-Interface hätte im aktuellen Stand einige Template-Funktionen (siehe Design Pattern nach Gamma et al) , mehrere abstrakte Methoden (welche quasi zum "Füllen" der Template-Funktionen implementiert werden müssen) und einige virtuelle Methoden (hauptsächlich für GUI-Sachen). Das Problem dabei ist, dass ich die virtuellen Funktionen der Schnittstelle im Header implementieren muss, damit der Qt - PluginLoader die kompilierten Plugins auch als solche erkennt (eine Implementierung im C++ File ist nicht möglich. Der PluginLoader behauptet dann, es wäre kein Plugin). Ich empfinde das als unsauber. Die Funktionen sollen aber virtuell sein, damit Kindklassen sie überschreiben können.
Die Fragen:
1.) Hatte jemand bereits ein ähnliches Problem und kann mir sagen, warum ich die virtuellen Methoden im Header implementieren muss um ein funktionierendes Plugin zu bekommen? Oder gibt es evtl.
2.) bereits existierende Ansätze für ein solch modulares GUI Konzept?
Vielen Dank und beste Grüße,
Eric