From 5e26d0efb42103457d813ea79830eebf6feeba9b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 23 Nov 2018 11:48:03 +0100 Subject: Loading and unloading of plugins at runtime --- src/browser.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/browser.cpp b/src/browser.cpp index cc5d565..4547e08 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -243,9 +243,6 @@ MainWindow *Browser::createWindow() }); for(QPluginLoader *loader : qAsConst(m_plugins)) { - const auto *plugin = qobject_cast(loader->instance()); - Q_CHECK_PTR(plugin); - auto *pluginMenu = window->ui->menuTools->addMenu(loader->metaData().value("MetaData").toObject().value("name").toString()); auto *aboutAction = pluginMenu->addAction(tr("About")); @@ -257,8 +254,12 @@ MainWindow *Browser::createWindow() auto *runAction = pluginMenu->addAction(tr("Run")); runAction->setShortcut(QKeySequence::fromString(loader->metaData().value("MetaData").toObject().value("shortcut").toString())); - connect(runAction, &QAction::triggered, window, [=]() { - plugin->createWidget(window)->exec(); + connect(runAction, &QAction::triggered, window, [loader, window]() { + if(loader->isLoaded()) { + const auto *interface = qobject_cast(loader->instance()); + Q_CHECK_PTR(interface); + interface->createWidget(window)->exec(); + } }); } -- cgit v1.2.1