Я пытаюсь переключаться между различными файлами QML из C ++. Я использую QQMLApplicationEngine и могу загрузить новый файл, используя engine.load(filename)
Прежде чем сделать это, я закрываю текущее окно (QQuickWindow), используя
QObject* pRootObject = in_pQmlApplicationEngine->rootObjects().first();
Q_ASSERT( pRootObject != NULL );
Q_ASSERT( pRootObject->objectName() == "mainWindow" );
QQuickWindow* pMainWindow = qobject_cast<QQuickWindow*>(pRootObject);
Q_ASSERT( pMainWindow );
pMainWindow->close();
который я нашел здесь: Правильная перезагрузка QQmlApplicationEngine
Это работает, в том смысле, что окно фактически закрывается, но возникает проблема — rootObject (из корневых объектов QQMLApplicationEngine) не удаляется. Так что, если я переключусь туда-сюда несколько раз, список rootObjects просто увеличится.
Кто-нибудь знает, что я делаю не так?
Задача ещё не решена.
Других решений пока нет …