为什么 QQuickWindow->close() 不从 rootObjects 中删除对象?



我正在尝试从C++在不同的QML文件之间切换。我使用 QQMLApplicationEngine,我可以使用 engine.load(filename) 加载一个新文件

在执行此操作之前,我使用

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();

我在这里找到的:正确重新加载QQml应用程序引擎

这是有效的,意思是窗口实际上关闭了,但是,问题来了 - rootObject(来自QQMLApplicationEngine rootObjects(没有被删除。因此,如果我来回切换几次,rootObjects 列表就会增长。

有人知道我做错了什么吗?

Close只是明显地关闭了一个对象,但实际上并没有删除它。close后致电:

pMainWindow->deleteLater();

最新更新