Перезагрузка контента QQuickWindow без восстановления окна

Для файла qml с Item элемент как корень сцены qml:

Item {
...
}

можно предварительно просмотреть qml содержимое файла с QQuickView без окна отдыха - см. соответствующие слегка модифицированные и упрощенные qmlscene код:

QQmlEngine engine;
QPointer<QQmlComponent> component = new QQmlComponent(&engine);
QQuickWindow *window = nullptr;
auto qxView = new QQuickView(&engine, nullptr);

...

// Call this slot on file update (for example by QFileSystemWatcher signal)
updatePreview()
{
    // Recreate Qml Component
    engine.clearComponentCache();
    component = new QQmlComponent(&engine);
    component->loadUrl(url);
    QObject *topLevel = component->create();

    // Recreate Quick Window
    window = qobject_cast<QQuickWindow *>(topLevel);
    if (window) {
        engine.setIncubationController(window->incubationController());
    } else {
        QQuickItem *contentItem = qobject_cast<QQuickItem *>(topLevel);
        if (contentItem) {
            window = qobject_cast<QQuickWindow *>(qxView);
            delete qxView->rootObject(); // Clear old root object before setting new one
            qxView->setContent(url, component, contentItem);
        }
    }
}

Для таких qml структура файла window становиться nullptr на Quick Window отдых и исполнение идет в else путь if заявление. И там мы используем один QQuickView пример - qxView, просто изменяя свой контент без полной перезагрузки и отдыха.

Кстати, QQuickView::setContent() без документов, но используется в qmlscene,

Однако если qml файл содержит ApplicationWindow как корневой элемент сцены:

ApplicationWindow {
...
}

Исполнение идет по 1-му варианту отдыха Quick Window:

engine.setIncubationController(window->incubationController());

и новый QQuickWindow Создан экземпляр, который занимает гораздо больше времени и заставляет нас разрушать и закрывать предыдущий.

Возможно ли это аналогично QQuickView перезагрузить содержание сцены для QQuickWindow без полного окна отдыха? Спасибо!

0 ответов

Другие вопросы по тегам