diff options
-rw-r--r-- | src/imports/controls/qtquickcontrols2plugin.cpp | 7 | ||||
-rw-r--r-- | tests/auto/qquickstyle/tst_qquickstyle.cpp | 36 |
2 files changed, 34 insertions, 9 deletions
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index d04d3018..76086376 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -77,6 +77,8 @@ class QtQuickControls2Plugin: public QQuickStylePlugin public: QtQuickControls2Plugin(QObject *parent = nullptr); + ~QtQuickControls2Plugin(); + void registerTypes(const char *uri) override; QString name() const override; @@ -88,6 +90,11 @@ QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQuickStylePlu initResources(); } +QtQuickControls2Plugin::~QtQuickControls2Plugin() +{ + QQuickStylePrivate::reset(); +} + void QtQuickControls2Plugin::registerTypes(const char *uri) { QQuickStylePrivate::init(typeUrl()); diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp index 1ce2a034..9de947a6 100644 --- a/tests/auto/qquickstyle/tst_qquickstyle.cpp +++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp @@ -46,21 +46,41 @@ class tst_QQuickStyle : public QObject Q_OBJECT private slots: - void init(); + void cleanup(); void lookup(); void commandLineArgument(); void environmentVariables(); void availableStyles(); + +private: + void loadControls(); + void unloadControls(); }; -void tst_QQuickStyle::init() +void tst_QQuickStyle::cleanup() { - QQuickStylePrivate::reset(); + unloadControls(); + QGuiApplicationPrivate::styleOverride.clear(); qunsetenv("QT_QUICK_CONTROLS_STYLE"); qunsetenv("QT_QUICK_CONTROLS_FALLBACK_STYLE"); } +void tst_QQuickStyle::loadControls() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.setData("import QtQuick 2.0; import QtQuick.Controls 2.1; Control { }", QUrl()); + + QScopedPointer<QObject> object(component.create()); + QVERIFY2(!object.isNull(), qPrintable(component.errorString())); +} + +void tst_QQuickStyle::unloadControls() +{ + qmlClearTypeRegistrations(); +} + void tst_QQuickStyle::lookup() { QVERIFY(QQuickStyle::name().isEmpty()); @@ -70,12 +90,7 @@ void tst_QQuickStyle::lookup() QCOMPARE(QQuickStyle::name(), QString("Material")); QVERIFY(!QQuickStyle::path().isEmpty()); - QQmlEngine engine; - QQmlComponent component(&engine); - component.setData("import QtQuick 2.0; import QtQuick.Controls 2.1; Control { }", QUrl()); - - QScopedPointer<QObject> object(component.create()); - QVERIFY(!object.isNull()); + loadControls(); QCOMPARE(QQuickStyle::name(), QString("Material")); QVERIFY(!QQuickStyle::path().isEmpty()); @@ -84,6 +99,9 @@ void tst_QQuickStyle::lookup() void tst_QQuickStyle::commandLineArgument() { QGuiApplicationPrivate::styleOverride = "CmdLineArgStyle"; + + loadControls(); + QCOMPARE(QQuickStyle::name(), QString("CmdLineArgStyle")); } |