diff options
Diffstat (limited to 'tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp')
-rw-r--r-- | tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp index 66069c48cb..d5ac20cafc 100644 --- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp +++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp @@ -4219,11 +4219,15 @@ void tst_qquickvisualdatamodel::invalidContext() engine.rootContext()->setContextProperty("myModel", &model); QScopedPointer<QQmlContext> context(new QQmlContext(engine.rootContext())); + QScopedPointer<QObject> obj; + { + // The component keeps a reference to the root context as long as the engine lives. + // In order to drop the root context we need to drop the component first. + QQmlComponent c(&engine, testFileUrl("visualdatamodel.qml")); + obj.reset(c.create(context.data())); + } - QQmlComponent c(&engine, testFileUrl("visualdatamodel.qml")); - - - QQmlDelegateModel *visualModel = qobject_cast<QQmlDelegateModel*>(c.create(context.data())); + QQmlDelegateModel *visualModel = qobject_cast<QQmlDelegateModel *>(obj.get()); QVERIFY(visualModel); QQuickItem *item = qobject_cast<QQuickItem*>(visualModel->object(4)); |