diff --git a/src/plugins/projectexplorer/extracompiler.cpp b/src/plugins/projectexplorer/extracompiler.cpp index ecefbf353a8..328d24df405 100644 --- a/src/plugins/projectexplorer/extracompiler.cpp +++ b/src/plugins/projectexplorer/extracompiler.cpp @@ -354,7 +354,11 @@ ExtraCompilerFactory::ExtraCompilerFactory(QObject *parent) : QObject(parent) void ExtraCompilerFactory::registerExtraCompilerFactory(ExtraCompilerFactory *factory) { - factories()->append(factory); + QList *factoryList = factories(); + factoryList->append(factory); + connect(factory, &QObject::destroyed, [factoryList, factory]() { + factoryList->removeAll(factory); + }); } QList ExtraCompilerFactory::extraCompilerFactories() diff --git a/src/plugins/qtsupport/qscxmlcgenerator.h b/src/plugins/qtsupport/qscxmlcgenerator.h index cb375999c64..1c52f0410db 100644 --- a/src/plugins/qtsupport/qscxmlcgenerator.h +++ b/src/plugins/qtsupport/qscxmlcgenerator.h @@ -58,6 +58,8 @@ class QScxmlcGeneratorFactory : public ProjectExplorer::ExtraCompilerFactory { Q_OBJECT public: + QScxmlcGeneratorFactory(QObject *parent = 0) : ExtraCompilerFactory(parent) {} + ProjectExplorer::FileType sourceType() const override; QString sourceTag() const override; diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index cc2b1ae3cc7..279776fdf1c 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -89,9 +89,9 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes ProjectExplorer::KitManager::registerKitInformation(new QtKitInformation); ProjectExplorer::ExtraCompilerFactory::registerExtraCompilerFactory( - new UicGeneratorFactory); + new UicGeneratorFactory(this)); ProjectExplorer::ExtraCompilerFactory::registerExtraCompilerFactory( - new QScxmlcGeneratorFactory); + new QScxmlcGeneratorFactory(this)); QtVersionManager::initialized(); diff --git a/src/plugins/qtsupport/uicgenerator.h b/src/plugins/qtsupport/uicgenerator.h index e51281606ee..21fd09e12b9 100644 --- a/src/plugins/qtsupport/uicgenerator.h +++ b/src/plugins/qtsupport/uicgenerator.h @@ -50,6 +50,8 @@ class UicGeneratorFactory : public ProjectExplorer::ExtraCompilerFactory { Q_OBJECT public: + UicGeneratorFactory(QObject *parent = 0) : ExtraCompilerFactory(parent) {} + ProjectExplorer::FileType sourceType() const override; QString sourceTag() const override;