logplus/HPluginManage/HPluginManage.h

60 lines
1.2 KiB
C
Raw Permalink Normal View History

2025-10-29 17:23:30 +08:00
#ifndef HPLUGINMANAGE_H
#define HPLUGINMANAGE_H
#include <QObject>
#include <QMap>
#include <QPluginLoader>
#include <QList>
#include <QMetaObject>
#include "HPluginInterface.h"
#include "HPluginManageExport.h"
class QPluginLoader;
class HPLUGINMANAGE_EXPORT HPluginManage : public QObject
{
Q_OBJECT
private:
explicit HPluginManage();
~HPluginManage();
public:
static HPluginManage* getInstance();
/**
* @brief getPluginList:
* @return
*/
std::list<HPLUGIN_INFO *> getPluginList();
private:
/**
* @brief loadPlugin
* @return true表示加载插件成功false表示加载插件失败
*/
bool loadPlugin(QString path);
/**
* @brief unloadPlugin :
* @return true表示卸载成功false表示卸载失败
*/
bool unloadPlugin();
QList<QString> scan(QString filePath);
private:
//存储所有控件插件的Hash表.
QMap<QString, HPluginInterface *> m_PluginMap;
//所有插件对象Hash链表.
QList<QPluginLoader *> m_pluHash;
std::list<HPLUGIN_INFO *> m_PluInfoList;
public:
Q_DISABLE_COPY(HPluginManage)
};
#endif // HPLUGINMANAGE_H