void QQuickWindowQmlImpl::classBegin() { Q_D(QQuickWindowQmlImpl); QQmlEngine* e = qmlEngine(this); //Give QQuickView behavior when created from QML with QQmlApplicationEngine if (QCoreApplication::instance()->property("__qml_using_qqmlapplicationengine") == QVariant(true)) { if (e && !e->incubationController()) e->setIncubationController(incubationController()); } Q_ASSERT(e); { QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(e); QV4::Scope scope(v4); QV4::ScopedObject v(scope, QV4::QQuickRootItemMarker::create(e, this)); d->rootItemMarker = v; } }
void tst_QQuickView::engine() { QQmlEngine *engine = new QQmlEngine; QVERIFY(!engine->incubationController()); QQuickView *view = new QQuickView(engine, 0); QVERIFY(view); QVERIFY(engine->incubationController() == view->incubationController()); QQuickView *view2 = new QQuickView(engine, 0); QVERIFY(view); QVERIFY(engine->incubationController() == view->incubationController()); delete view; QVERIFY(!engine->incubationController()); engine->setIncubationController(view2->incubationController()); QVERIFY(engine->incubationController() == view2->incubationController()); delete view2; QVERIFY(!engine->incubationController()); QQuickView *view3 = new QQuickView; QQuickView *view4 = new QQuickView(view3->engine(), 0); QVERIFY(view3->engine()); QVERIFY(view4->engine()); QCOMPARE(view3->engine(), view4->engine()); delete view3; QVERIFY(!view4->engine()); QTest::ignoreMessage(QtWarningMsg, "QQuickView: invalid qml engine. "); view4->setSource(QUrl()); QCOMPARE(view4->status(), QQuickView::Error); QVERIFY(!view4->errors().isEmpty()); QCOMPARE(view4->errors().back().description(), QLatin1String("QQuickView: invalid qml engine.")); delete view4; }