Daqster

QPluginManager

Родител: Framework Subsystem Architecture Overview

Class: QPluginManager
Location: src/frame_work/base/src/QPluginManager.cpp

Overview

Управлява динамично зареждане на плъгини, тяхната мета-информация, зависимости и lifecycle. Осигурява интерфейси за плъгини чрез QPluginInterface.

Responsibilities

Plugin Metadata

Plugin-ите имат мета-информация (JSON/Qt мета-данни):

Loading

QPluginLoader loader(pluginPath);
QObject* plugin = loader.instance();
if (plugin) {
    // Query interface
    auto iface = qobject_cast<QPluginInterface*>(plugin);
    if (iface) {
        // Register plugin
        registerPlugin(iface);
    }
}

Interfaces

QPluginInterface

Общ интерфейс за плъгини:

class QPluginInterface {
public:
    virtual ~QPluginInterface() {}
    virtual QString name() const = 0;
    virtual QString version() const = 0;
    virtual void initialize() = 0;
    virtual void shutdown() = 0;
};

Dependency Management

GUI Integration

QPluginManagerGui показва списък с плъгини, статус, бутони за enable/disable.

Error Handling

Usage

QPluginManager manager;
manager.addSearchPath("plugins/Daqster");
manager.loadAll();

auto plugin = manager.getPlugin("NodeEditor");
if (plugin) {
    plugin->initialize();
}

See Also