最近一直在学习QML,在Qt Creator中新建Qt Quick工程后,尝试不断地修改qml文件来进行试验,qml文件需要反反复复的修改。

Qt Widget工程,如果修改了cpp代码后,直接构建或者直接运行,编译器都会重新编译最新的代码进而运行展示,但是qml工程却不是这样,每次修改qml文件后,直接build并不总是加载最新代码,经常需要“清除-构建-运行”。

这是由于qml和前端javascript类似,具有缓存机制,加载的还是上次缓存中的内容。

官方文档“https://doc.qt.io/qt-5/qtquick-deployment.html”给出了关于QML缓存的解释:

翻译如下:

QML缓存

QML运行时通过解析QML文档并生成字节代码来加载它们。大多数情况下,文档自上次加载后没有更改。
为了加快此加载过程,QML运行时为每个QML文档维护一个缓存文件。此缓存文件包含已编译的字节代码和QML文档结构的二进制表示。
此外,当多个应用程序使用相同的QML文档时,代码所需的内存在应用程序进程之间共享。缓存文件通过符合POSIX的操作系统上的mmap()系统调用或Windows上的CreateFileMapping()加载,从而节省大量内存。
每次加载更改的QML文档时,都会自动重新创建缓存。
缓存文件位于QStandardPaths :: CacheLocation的子目录中,名称为“qmlcache”。
QML文档的文件扩展名为.qmlc,导入的JavaScript模块的文件扩展名为.jsc。

通过拿Everything在系统上搜索,果然如此:

我还没有在Qt Creator中找到一键清除缓存后重新编译的方法,找到后分享,也欢迎知道的大神给指点一下!

QML 缓存(QML Caching)的更多相关文章

  1. 函数缓存 (Function caching)

    函数返回值缓存是优化一个函数的常用手段.我们可以将函数.输入参数.返回值全部保存起来,当下次以同样的参数调用这个函数时,直接使用存储的结果作为返回(不需要重新计算). 函数缓存允许我们将一个函数对于给 ...

  2. 初学QML之QML和C++混合方法

    混合使用QML和C++的方法 1加载一个QML组件,然后从 C++对其进行操作: 2直接将一个C++对象及其属性嵌入到QML组件: 3定义一个新的QML元素(通过基于QOject的C++类)并在QML ...

  3. 使用C++还是QML(QML容易使用和维护,效果好)

    本质上,Qt 是一个C++类库.在引入 QML 以前,所有的开发都是基于 C++ 的,但到了 Qt 5,QML 和 Qt Quick 成为了 Qt 的核心之一,导致很多初学者在犹豫是否还需要学习 C+ ...

  4. QT QML 在qml中自定义信号

    服从真理,就能征服一切事物. -- 塞涅卡 实例: 自定义文件 MoveYou.qml: import QtQuick 2.5 import QtQuick.Controls 1.4 import Q ...

  5. http缓存(http caching)

    通过使用缓存web网站和web应用的性能能够得到显著的提升.Web caches能够减小延迟和网络流量,从而缩短展示资源所花费的时间. 在http中控制缓存行为的首部字段是Cache-Control, ...

  6. qml : qml控件自适应;

    import QtQuick 2.4 Item { property var targetItem: parent property bool fixedAspectRatio: true // El ...

  7. Qml应用程序的性能考虑与建议

    本文翻译自Qt官网文档: http://doc.qt.io/qt-5/qtquick-performance.html QtQml应用程序的性能考虑与建议 1.时间考虑 作为一名程序开发者,应该努力使 ...

  8. Qt qml 单例模式

    Qt qml 单例模式,没什么好说的,看代码吧.单例模式很适合做全局的配置文件. [示例下载] http://download.csdn.net/detail/surfsky/8539313 [以下是 ...

  9. QML入门教程

    QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的语言.QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现.在QML,一个用户界面被指定为具有属性的 ...

随机推荐

  1. LNK2001 无法解析的外部符号 __imp__CameraCreateSettingPage@24

    用VS2017,Release X86进行编译时显示如下错误: 1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraGetImageBuf ...

  2. datagrid editor动态的改变不同行修改列的editor属性

    onBeforeEdit: function (row) { let options = $(this).treegrid('options'); options.tempeditor = optio ...

  3. python selenium2 动态调试

    #coding=utf-8'''Created on 2017-9-9 @author: ceshi 转自https://testerhome.com/topics/9897''' # rpcserv ...

  4. 怎么删掉xampp文件夹

    删掉xampp文件夹时,提示:操作无法完成,因为其中的文件夹或文件已在另一程序中打开 具体的解决方法: 菜单栏输入:服务 找到apachezt和mysqlzt,并禁用    -- 因为之前打开Zent ...

  5. java+selenium元素定位和元素操作

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  6. djang小项目过程中的小问题 02(跳转界面)

    我觉着自己生下来就是解决问题的 ##1. 今天在使用登录注册模板时,输入后缀index,正常显示登录界面,但是点击 立即注册 之后不会跳转到注册页面 因为我观察到后缀名发生变化了,但是出发点是错的,前 ...

  7. onchange onpropertychange 和 oninput 事件的区别

    onchange 事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发. onpropertychange 事件却是实时触发,即每增加或删除一个字符就会触发,通过 js 改变也会触发该事件,但是 ...

  8. Oracle 10G RAC集群安装

    一,基本环境配置 01,hosts cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loc ...

  9. 2018-2019-2 20162329 《网络对抗技术》Exp9: Web安全基础

    目录 Exp9: Web安全基础 一.基础知识 1.SQL注入攻击 2.XSS跨站脚本攻击 3.CSRF跨站请求伪造 二.SQL注入 1. 命令注入 2. 数字注入 3. 日志欺骗 三.XSS攻击 1 ...

  10. fiddler抓包-5-Composer功能进行接口测试

    前言 fiddler是个强大的抓接口工具,轻松看出接口的所有参数,这里介绍一个Composer功能它也可以进行接口测试,平时接口可能传参错误,我们可以拖拽接口来改参数直接再请求了,非常方便! 一.Co ...