保存后重新加载

Posted

技术标签:

【中文标题】保存后重新加载【英文标题】:Livereload after save 【发布时间】:2015-07-22 18:38:10 【问题描述】:

我刚刚开始使用 QtCreator 在 QML 中进行编程。我更喜欢使用代码编辑器而不是设计编辑器来编写 QML 文件。但每次保存后,我都必须运行应用程序才能看到更改。即使在构建时启用自动保存也不是解决方案,因为每个构建都会出现一个新窗口,但旧窗口仍在桌面上。

所以我在 bash 中编写了这个两行脚本来在保存 QML 后重新加载 UI:

while sleep 0.1; do qmlscene main.qml; done &
while true; do while inotifywait -e close_write *.qml; do killall qmlscene; done; done &

当一个 QML 被保存时,killall qmlscene 被调用,然后一个新的qmlscene 被启动。

QtCreator 是否提供这样的 livereload 功能?我不需要重新编译,重新加载qml文件就可以了。

【问题讨论】:

【参考方案1】:

你有clearComponentCache,但你需要在调用它后重新加载qml:

view->engine()->clearComponentCache();
view->setSource("qml/main.qml");
view->show();

【讨论】:

我正在寻找 IDE 功能,我想避免更改代码。类似qmlscene --watch main.qml 不,你不会找到任何 IDE 这样做,你总是需要关闭然后打开应用程序或清除并重新加载缓存。【参考方案2】:

V-Play 引擎为 Windows、Linux、MacOS、iosandroid 上的应用和游戏提供 QML 实时重新加载。

您可以在我们的博客上找到更多信息:

https://v-play.net/updates/release-2-14-0-live-code-reloading-for-desktop-ios-android

我们最近还添加了从浏览器实时重新加载,以直接从文档和博客中测试代码示例:

https://v-play.net/cross-platform-development/web-editor-test-online-code-examples-on-android-and-ios-with-live-code-reloading

【讨论】:

以上是关于保存后重新加载的主要内容,如果未能解决你的问题,请参考以下文章

保存游戏(使用localStorage)并在重新加载页面后继续游戏的能力

场景重新加载后不保存对象名称

为啥在保存对象后使用“重新加载”方法? (Hartl Rails Tut 6.30)

Ag-Grid:应用过滤器后如何保存和重新加载列

在 kivymd 上重新运行应用程序后如何保存和加载数据

UICollectionview 在使用 Core Data 保存实体后重新加载数据