我正在尝试在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();
我在这里找到:Properly reloading a QQmlApplicationEngine
这有效,意思是窗口实际关闭,但是,问题就出现了 - rootObject(来自QQMLApplicationEngine rootObjects)没有被删除。因此,如果我来回切换几次rootObjects列表就会增长。
有人知道我做错了什么吗?
答案 0 :(得分:0)
Close
只是可见的关闭对象,但实际上并未将其删除。在close
之后致电:
pMainWindow->deleteLater();