本文整理汇总了C++中QPluginLoader::load方法的典型用法代码示例。如果您正苦于以下问题:C++ QPluginLoader::load方法的具体用法?C++ QPluginLoader::load怎么用?C++ QPluginLoader::load使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QPluginLoader
的用法示例。
在下文中一共展示了QPluginLoader::load方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadMySqlDriver
void loadMySqlDriver()
{
QPluginLoader loader;
loader.setFileName("/opt/qtsdk-2010.04/qt/plugins/sqldrivers/libqsqlmysql.so");
qDebug()<<loader.load();
qDebug()<<loader.errorString();
}
示例2: loadPlugin
void suiPluginManager::loadPlugin(const QString &fileName)
{
qDebug() << "Load plugin: " << fileName;
if (mPluginLoaders.find(fileName) != mPluginLoaders.end())
SuiExcept(SuiExceptionDuplicateItem,
QString("Plugin '%1' already loaded").arg(fileName),
"void suiPluginManager::loadPlugin(const QString &fileName)");
QPluginLoader *loader = new QPluginLoader(fileName, this);
if (!loader->load())
{
qDebug() << loader->errorString();
SuiExcept(SuiExceptionInternalError,
QString("Can't load plugin '%1'").arg(fileName),
"void suiPluginManager::loadPlugin(const QString &fileName)");
}
// process instances
UiPluginInterface *plugInterface = qobject_cast<UiPluginInterface*>(loader->instance());
if (plugInterface != 0)
{
mPluginLoaders[fileName] = loader;
processLoadPlugin(plugInterface);
}else
{
delete loader;
SuiExcept(SuiExceptionInternalError,
QString("There are no plugin interface in '%1'").arg(fileName),
"void suiPluginManager::loadPlugin(const QString &fileName)");
}
}
示例3: loadPlugin
void PluginManager::loadPlugin(QString const & path)
{
qDebug() << "Load plugin: " << path;
Q_ASSERT(mPluginLoaders.find(path) == mPluginLoaders.end());
QPluginLoader * loader = new QPluginLoader(path, this);
if (!loader->load())
{
qDebug() << loader->errorString();
qDebug() << QString("Can't load plugin '%1'").arg(path);
}
// process instances
PluginInterface *plugInterface = qobject_cast<PluginInterface*>(loader->instance());
if (plugInterface != 0)
{
mPluginLoaders[path] = loader;
processLoadPlugin(plugInterface);
}else
{
delete loader;
qDebug() << QString("There are no plugin interface in '%1'").arg(path);
}
}
示例4: run
void PluginLoaderThread::run()
{
if (m_queue.empty() || m_targetThread == 0) {
qCritical() << "Invalid plugin loading parameters";
return;
}
while (!m_queue.isEmpty()) {
QPluginLoader * loader = new QPluginLoader ();
loader->setFileName (m_queue.takeFirst());
loader->setLoadHints (QLibrary::ExportExternalSymbolsHint);
if (loader->load()) {
QMutexLocker locker(&m_mutex);
if (!m_abort) {
loader->moveToThread(m_targetThread);
//loader->setParent(parent());
}
else {
qDebug() << "Plugin loading aborted, exiting loader thread";
delete loader;
loader = 0;
break;
}
}
else {
qCritical() << "Failed to load plugin:" << loader->errorString();
delete loader;
loader = 0;
}
Q_EMIT(pluginLoaded(loader, m_queue.isEmpty()));
}
}
示例5: loadPlugins
void GLWidget::loadPlugins(const QStringList& list) {
QStringList::ConstIterator it = list.constBegin();
while(it != list.constEnd())
{
QString name = *it;
QPluginLoader *loader = new QPluginLoader(name);
if (! loader->load()) {
qDebug() << "Could not load plugin " << name << "\n";
qDebug() << loader->errorString() << "\n";
}
if (loader->isLoaded())
{
qDebug() << "Loaded plugin: " << loader->fileName(); // << endl;
QObject *plugin = loader->instance();
if (plugin)
{
plugins.push_back(loader);
BasicPlugin *plugin = qobject_cast<BasicPlugin *>(loader->instance());
// initialize plugin
if (plugin)
{
plugin->setWidget(this);
plugin->setArgs(mainArgs);
plugin->onPluginLoad();
if (plugin->drawScene()) // overrides drawScene?
drawPlugin = plugin;
}
}
}
else
{
qDebug() << "Load error: " << name << endl;
delete loader;
}
++it;
}
// make sure all plugins know about the latest plugin that overrides drawScene
for (unsigned int i=0; i<plugins.size(); ++i)
{
BasicPlugin *plugin = qobject_cast<BasicPlugin *>(plugins[i]->instance());
if (plugin)
plugin->setDrawPlugin(drawPlugin);
else
{
qDebug() << "Error: the plugin must implement the BasicPlugin interface" << endl <<
" Example: " << endl <<
" Q_INTERFACES(BasicPlugin)" << endl;
}
}
resetCamera();
}
示例6: reloadPlugin
void tst_QPluginLoader::reloadPlugin()
{
QPluginLoader loader;
loader.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
loader.load(); // not recommended, instance() should do the job.
PluginInterface *instance = qobject_cast<PluginInterface*>(loader.instance());
QVERIFY(instance);
QCOMPARE(instance->pluginName(), QLatin1String("Plugin ok"));
QSignalSpy spy(loader.instance(), SIGNAL(destroyed()));
QVERIFY(spy.isValid());
QVERIFY(loader.unload()); // refcount reached 0, did really unload
QCOMPARE(spy.count(), 1);
// reload plugin
QVERIFY(loader.load());
QVERIFY(loader.isLoaded());
PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader.instance());
QVERIFY(instance2);
QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
QVERIFY(loader.unload());
}
示例7: log
// looking for dynamic plugins
foreach(const QFileInfo & fileName, files)
{
emit log((int)LogDebug, MODULENAME, QString("Loading plugin: %1").arg(fileName.fileName()), "");
QPluginLoader loader;
loader.setLoadHints(QLibrary::ResolveAllSymbolsHint|QLibrary::ExportExternalSymbolsHint);
loader.setFileName( fileName.absoluteFilePath());
if (!loader.load())
{
qCritical() << loader.errorString();
continue;
}
QObject *plugin = loader.instance();
if (plugin && qobject_cast<PropertyInterface*>(plugin))
m_plugins.push_back(qobject_cast<PropertyInterface*>(plugin));
else
emit log((int)LogWarning, MODULENAME, QString("It\'s not a PropertyEditor plugin: %1").arg(fileName.fileName()), "");
}
示例8: loadNecessaryQtPlugins
void loadNecessaryQtPlugins() {
static QPluginLoader qkrcodecsLoader( "qkrcodecs" );
static QPluginLoader qcncodecsLoader( "qcncodecs" );
static QPluginLoader qjpcodecsLoader( "qjpcodecs" );
static QPluginLoader qtwcodecsLoader( "qtwcodecs" );
static QPluginLoader qjpegLoader("qjpeg");
static QPluginLoader qgifLoader("qgif");
static QPluginLoader qmngLoader("qmng");
qkrcodecsLoader.load();
qcncodecsLoader.load();
qjpcodecsLoader.load();
qtwcodecsLoader.load();
qjpegLoader.load();
qgifLoader.load();
qmngLoader.load();
}
示例9: if
PluginInterface *Agros2D::loadPlugin(const QString &pluginName)
{
QPluginLoader *loader = NULL;
#ifdef Q_WS_X11
if (QFile::exists(QString("%1/libs/libagros2d_plugin_%2.so").arg(datadir()).arg(pluginName)))
loader = new QPluginLoader(QString("%1/libs/libagros2d_plugin_%2.so").arg(datadir()).arg(pluginName));
if (!loader)
{
if (QFile::exists(QString("/usr/local/lib/libagros2d_plugin_%1.so").arg(pluginName)))
loader = new QPluginLoader(QString("/usr/local/lib/libagros2d_plugin_%1.so").arg(pluginName));
else if (QFile::exists(QString("/usr/lib/libagros2d_plugin_%1.so").arg(pluginName)))
loader = new QPluginLoader(QString("/usr/lib/libagros2d_plugin_%1.so").arg(pluginName));
}
#endif
#ifdef Q_WS_WIN
if (QFile::exists(QString("%1/libs/agros2d_plugin_%2.dll").arg(datadir()).arg(pluginName)))
loader = new QPluginLoader(QString("%1/libs/agros2d_plugin_%2.dll").arg(datadir()).arg(pluginName));
#endif
if (!loader)
{
throw AgrosPluginException(QObject::tr("Could not find 'agros2d_plugin_%1'").arg(pluginName));
}
if (!loader->load())
{
QString error = loader->errorString();
delete loader;
throw AgrosPluginException(QObject::tr("Could not load 'agros2d_plugin_%1' (%2)").arg(pluginName).arg(error));
}
assert(loader->instance());
PluginInterface *plugin = qobject_cast<PluginInterface *>(loader->instance());
// loader->unload();
delete loader;
return plugin;
}
示例10: readCustomForms
// read forms
void readCustomForms(QMenu *menu)
{
QDir dir(datadir() + "/libs/");
QStringList filter;
filter << "*agros2d_forms_*";
QStringList list = dir.entryList(filter);
foreach (QString filename, list)
{
QString fn = QString("%1/%2").arg(dir.absolutePath()).arg(filename);
if (QFile::exists(fn))
{
QPluginLoader *loader = new QPluginLoader(fn);
if (!loader)
{
throw AgrosException(QObject::tr("Could not find '%1'").arg(fn));
}
if (!loader->load())
{
qDebug() << loader->errorString();
delete loader;
throw AgrosException(QObject::tr("Could not load '%1'. %2").arg(fn).arg(loader->errorString()));
}
assert(loader->instance());
FormInterface *form = qobject_cast<FormInterface *>(loader->instance());
delete loader;
if (form)
{
qDebug() << QString("Form '%1' loaded.").arg(form->formId());
menu->addAction(form->action());
}
}
}
示例11: loadPlugin
bool EditorManager::loadPlugin(QString const &pluginName)
{
QPluginLoader *loader = new QPluginLoader(mPluginsDir.absoluteFilePath(pluginName));
loader->load();
QObject *plugin = loader->instance();
if (plugin) {
EditorInterface *iEditor = qobject_cast<EditorInterface *>(plugin);
if (iEditor) {
mPluginsLoaded += iEditor->id();
mPluginFileName.insert(iEditor->id(), pluginName);
mPluginIface[iEditor->id()] = iEditor;
mLoaders.insert(pluginName, loader);
return true;
}
}
QMessageBox::warning(NULL, tr("error"), tr("Plugin loading failed: ") + loader->errorString());
loader->unload();
delete loader;
return false;
}
示例12: foreach
foreach (const QString &dir, dirsToCheck) {
QVector<KPluginMetaData> metadataList = KPluginLoader::findPlugins(dir,
[=](const KPluginMetaData &data)
{
return data.serviceTypes().contains("artikulate/libsound/backend");
});
foreach (const auto &metadata, metadataList) {
loader.setFileName(metadata.fileName());
qCDebug(LIBSOUND_LOG) << "Load Plugin: " << metadata.name();
if (!loader.load()) {
qCCritical(LIBSOUND_LOG) << "Error while loading plugin: " << metadata.name();
}
KPluginFactory *factory = KPluginLoader(loader.fileName()).factory();
if (!factory) {
qCCritical(LIBSOUND_LOG) << "Could not load plugin:" << metadata.name();
continue;
}
BackendInterface *plugin = factory->create<BackendInterface>(parent, QList< QVariant >());
if (plugin->outputBackend()) {
m_backendList.append(plugin->outputBackend());
}
}
示例13: qMakePair
QPair<QObject *, QString> PluginManagerImplementation::pluginLoadedByName(QString const &pluginName)
{
QPluginLoader *loader = new QPluginLoader(mPluginsDir.absoluteFilePath(pluginName));
loader->load();
QObject *plugin = loader->instance();
if (plugin) {
mFileNameAndPlugin.insert(pluginName, plugin);
return qMakePair(plugin, QString());
}
QString const loaderError = loader->errorString();
// Unloading of plugins is currently (Qt 5.3) broken due to a bug in metatype system: calling Q_DECLARE_METATYPE
// from plugin registers some data from plugin address space in Qt metatype system, which is not being updated
// when plugin is unloaded and loaded again. Any subsequent calls to QVariant or other template classes/methods
// which use metainformation will result in a crash. It is likely (but not verified) that qRegisterMetaType leads
// to the same issue. Since we can not guarantee that plugin does not use Q_DECLARE_METATYPE or qRegisterMetaType
// we shall not unload plugin at all, to be safe rather than sorry.
//
// But it seems also that metainformation gets deleted BEFORE plugins are unloaded on application exit, so we can
// not call any metainformation-using code in destructors that get called on unloading. Since Qt classes themselves
// are using such calls (QGraphicsViewScene, for example), random crashes on exit may be a symptom of this problem.
//
// EditorManager is an exception, because it really needs to unload editor plugins, to be able to load new versions
// compiled by metaeditor. Editor plugins are generated, so we can guarantee to some extent that there will be no
// metatype registrations.
//
// See:
// http://stackoverflow.com/questions/19234703/using-q-declare-metatype-with-a-dll-that-may-be-loaded-multiple-times
// (and http://qt-project.org/forums/viewthread/35587)
// https://bugreports.qt-project.org/browse/QTBUG-32442
delete loader;
return qMakePair(nullptr, loaderError);
}
示例14: loadBinary
bool loadBinary() {
loader->setLoadHints(QLibrary::ResolveAllSymbolsHint | QLibrary::ExportExternalSymbolsHint);
return loader->load();
}
示例15: ExtensionLoad
void Core::ExtensionLoad()
{
QString path_ = Configuration::GetExtensionsRootPath();
if (QDir().exists(path_))
{
QDir d(path_);
QStringList extensions = d.entryList();
int xx = 0;
while (xx < extensions.count())
{
QString name = extensions.at(xx).toLower();
if (name.endsWith(".so") || name.endsWith(".dll"))
{
name = QString(path_) + extensions.at(xx);
QPluginLoader *extension = new QPluginLoader(name);
if (extension->load())
{
QObject* root = extension->instance();
if (root)
{
iExtension *interface = qobject_cast<iExtension*>(root);
if (!interface)
{
Huggle::Syslog::HuggleLogs->Log("Unable to cast the library to extension");
}else
{
if (interface->RequestNetwork())
{
interface->Networking = Query::NetworkManager;
}
if (interface->RequestConfiguration())
{
interface->Configuration = Configuration::HuggleConfiguration;
}
if (interface->RequestCore())
{
interface->HuggleCore = Core::HuggleCore;
}
if (interface->Register())
{
Core::Extensions.append(interface);
Huggle::Syslog::HuggleLogs->Log("Successfully loaded: " + extensions.at(xx));
}
else
{
Huggle::Syslog::HuggleLogs->Log("Unable to register: " + extensions.at(xx));
}
}
}
} else
{
Huggle::Syslog::HuggleLogs->Log("Failed to load (reason: " + extension->errorString() + "): " + extensions.at(xx));
delete extension;
}
} else if (name.endsWith(".py"))
{
#ifdef PYTHONENGINE
name = QString(path_) + extensions.at(xx);
if (Core::Python->LoadScript(name))
{
Huggle::Syslog::HuggleLogs->Log("Loaded python script: " + name);
} else
{
Huggle::Syslog::HuggleLogs->Log("Failed to load a python script: " + name);
}
#endif
}
xx++;
}
} else
{
Huggle::Syslog::HuggleLogs->Log("There is no extensions folder, skipping load");
}
Huggle::Syslog::HuggleLogs->Log("Extensions: " + QString::number(Core::Extensions.count()));
}