| Родител: Framework Subsystem | Architecture Overview |
Class: QPluginManager
Location: src/frame_work/base/src/QPluginManager.cpp
Управлява динамично зареждане на плъгини, тяхната мета-информация, зависимости и lifecycle. Осигурява интерфейси за плъгини чрез QPluginInterface.
QPluginLoader)QPluginManagerGuiPlugin-ите имат мета-информация (JSON/Qt мета-данни):
name: Име на плъгинаversion: Версияdependencies: други плъгини/библиотекиcapabilities: предоставяни интерфейси/функцииQPluginLoader loader(pluginPath);
QObject* plugin = loader.instance();
if (plugin) {
// Query interface
auto iface = qobject_cast<QPluginInterface*>(plugin);
if (iface) {
// Register plugin
registerPlugin(iface);
}
}
Общ интерфейс за плъгини:
class QPluginInterface {
public:
virtual ~QPluginInterface() {}
virtual QString name() const = 0;
virtual QString version() const = 0;
virtual void initialize() = 0;
virtual void shutdown() = 0;
};
dependencies в мета-информациятаQPluginManagerGui показва списък с плъгини, статус, бутони за enable/disable.
loader.errorString())QPluginManager manager;
manager.addSearchPath("plugins/Daqster");
manager.loadAll();
auto plugin = manager.getPlugin("NodeEditor");
if (plugin) {
plugin->initialize();
}