我正在尝试在 C++ 的不同 QML 文件之间切换。我使用 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
这有效,意思是窗口实际上关闭了,但是,问题来了 - 根对象(来自 QQMLApplicationEngine 根对象)没有被删除。因此,如果我来回切换几次,rootObjects 列表就会增长。
有人知道我做错了什么吗?