【发布时间】:2015-07-23 15:16:24
【问题描述】:
我有一个基于 QML 的应用程序,它从文件系统中加载 main.qml 文件,如下所示:
myEngine->load("main.qml");
这很好用,但我想“重新加载”引擎,以防 main.qml 被更新的版本替换。
到目前为止,我尝试再次调用 load(),假设引擎会像在其他 Qt 类中一样自动重置自己。
不幸的是,情况并非如此。如果我再次调用该方法,将出现另一个窗口,其中包含更新的 qml 文件的内容,而原始窗口保持打开状态并继续显示旧的 qml 文件。
为了解决这个问题,我尝试调用load(QUrl()),然后调用clearComponentCache(),最后调用新文件。这会产生相同的效果。
任何想法如何在应用程序运行时“正确”重新加载 QML 引擎?
【问题讨论】:
-
clearComponentCache()看起来只与组件有关,因此不考虑这些组件的实例。
标签: qt qml qqmlapplicationengine