ich beschäftige mich zur Zeit mit Qt und der Erstellung von eigenen Plugins.
Ich habe das Echoplugin erfolgreich umgesetzt und auch schon ein plugin mit eigenem Interface für mein programm erstellt. Funktioniert alles bestens.
Hilfe benötige ich für die Verwaltung der einzelnen plugins.
Mein Programm erstellt aus verschiedenen Daten mit Hilfe von Postprozessoren einen speziellen Quellcode.
Die Postprozessoren möchte ich flexibel als plugin/dll einbinden. Somit kann ich immer mehr Prozessoren integrieren,ohne jedes mal das ganze Programm neu zu
bauen.
Code: Alles auswählen
- Postprozessor 1
-Datenwidget --> Selector --> Postprozessor 2 --> Textwidget mit dem Code
- Postprozessor 3
Alle Postprozessoren verwenden das gleiche Interface.
Der jeweilige Postprozessor wird in einer Combobox ausgewählt.
Wie muss ich die einzelnen Plugins/Postprozessoren verwalten, so dass dass ich mit meiner Combobox als selector zwischen Ihnen wechseln kann?
Mein bisher noch einzelnes Plugin wird wie in dem Echoplugin Beispiel geladen:
Code: Alles auswählen
bool mainwindow::loadPlugin()
{
QDir pluginsDir(qApp->applicationDirPath());
#if defined(Q_OS_WIN)
if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
pluginsDir.cdUp();
#elif defined(Q_OS_MAC)
if (pluginsDir.dirName() == "MacOS") {
pluginsDir.cdUp();
pluginsDir.cdUp();
pluginsDir.cdUp();
}
#endif
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin) {
postprozInterface = qobject_cast<PostprozInterface *>(plugin);
if (PostprozInterface)
return true;
}
}
return false;
}