1、插件加载
#include <QPluginLoader>
#include <QSettings>
#include <QFileDialog>
#include <QDir>
QHash<QString, QObject*> Plugins;
bool LoadPlugins(QString IniFile)
{
QSettings Settings(IniFile, QSettings::IniFormat);
QDir PlugsDir(QCoreApplication::applicationDirPath()+"\\plugins");
QString FileName;
bool Ret = true;
Plugins.clear();
if(!PlugsDir.exists())
{
qDebug() << "Have not Plugins.";
return false;
}
Settings.sync();
Settings.beginGroup("Plugins");
QStringList Keys = Settings.allKeys();
for(int Index = 0; Index < Keys.size(); ++Index)
{
FileName = PlugsDir.filePath( Settings.value(Keys.at(Index)).toString() );
if( !PlugsDir.exists(FileName) )
{
Ret = false;
qDebug() << "no exists " << FileName;
break;
}
QPluginLoader pluginLoader( FileName );
if(pluginLoader.instance())
Plugins[Keys.at(Index).trimmed()] = pluginLoader.instance();
else
{
qDebug() << "Load Plugin " << FileName << "Failed !";
Ret = false;
break;
}
}
Settings.endGroup();
return Ret;
}