void PluginManager::loadPlugins() { QList<QPair<QString,QString> > pluginFilenames = loadFilenames(); foreach (auto filename, pluginFilenames) { QPluginLoader loader(filename.second); if(!loader.load()) { qWarning()<<"Unable to laod plugin: "<<filename.first; continue; } IPlugin * plugin = qobject_cast<IPlugin*>(loader.instance()); if(plugin) // Load a plugin { plugin->getQObject()->setObjectName(filename.first); qDebug() << "Load IPlugin " << filename.first; QJsonObject meta = loader.metaData(); QStringList dependancyList = meta.value("MetaData").toObject().value("dependencies").toVariant().toStringList(); foreach(QString dep, dependancyList) { plugin->addDependancy(getObjectByName(dep)); } instance._allObjects.append(qMakePair(filename.first, plugin->getQObject())); }