QML 缓存(QML Caching)
最近一直在学习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)的更多相关文章
- 函数缓存 (Function caching)
函数返回值缓存是优化一个函数的常用手段.我们可以将函数.输入参数.返回值全部保存起来,当下次以同样的参数调用这个函数时,直接使用存储的结果作为返回(不需要重新计算). 函数缓存允许我们将一个函数对于给 ...
- 初学QML之QML和C++混合方法
混合使用QML和C++的方法 1加载一个QML组件,然后从 C++对其进行操作: 2直接将一个C++对象及其属性嵌入到QML组件: 3定义一个新的QML元素(通过基于QOject的C++类)并在QML ...
- 使用C++还是QML(QML容易使用和维护,效果好)
本质上,Qt 是一个C++类库.在引入 QML 以前,所有的开发都是基于 C++ 的,但到了 Qt 5,QML 和 Qt Quick 成为了 Qt 的核心之一,导致很多初学者在犹豫是否还需要学习 C+ ...
- QT QML 在qml中自定义信号
服从真理,就能征服一切事物. -- 塞涅卡 实例: 自定义文件 MoveYou.qml: import QtQuick 2.5 import QtQuick.Controls 1.4 import Q ...
- http缓存(http caching)
通过使用缓存web网站和web应用的性能能够得到显著的提升.Web caches能够减小延迟和网络流量,从而缩短展示资源所花费的时间. 在http中控制缓存行为的首部字段是Cache-Control, ...
- qml : qml控件自适应;
import QtQuick 2.4 Item { property var targetItem: parent property bool fixedAspectRatio: true // El ...
- Qml应用程序的性能考虑与建议
本文翻译自Qt官网文档: http://doc.qt.io/qt-5/qtquick-performance.html QtQml应用程序的性能考虑与建议 1.时间考虑 作为一名程序开发者,应该努力使 ...
- Qt qml 单例模式
Qt qml 单例模式,没什么好说的,看代码吧.单例模式很适合做全局的配置文件. [示例下载] http://download.csdn.net/detail/surfsky/8539313 [以下是 ...
- QML入门教程
QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的语言.QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现.在QML,一个用户界面被指定为具有属性的 ...
随机推荐
- LNK2001 无法解析的外部符号 __imp__CameraCreateSettingPage@24
用VS2017,Release X86进行编译时显示如下错误: 1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraGetImageBuf ...
- datagrid editor动态的改变不同行修改列的editor属性
onBeforeEdit: function (row) { let options = $(this).treegrid('options'); options.tempeditor = optio ...
- python selenium2 动态调试
#coding=utf-8'''Created on 2017-9-9 @author: ceshi 转自https://testerhome.com/topics/9897''' # rpcserv ...
- 怎么删掉xampp文件夹
删掉xampp文件夹时,提示:操作无法完成,因为其中的文件夹或文件已在另一程序中打开 具体的解决方法: 菜单栏输入:服务 找到apachezt和mysqlzt,并禁用 -- 因为之前打开Zent ...
- java+selenium元素定位和元素操作
1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...
- djang小项目过程中的小问题 02(跳转界面)
我觉着自己生下来就是解决问题的 ##1. 今天在使用登录注册模板时,输入后缀index,正常显示登录界面,但是点击 立即注册 之后不会跳转到注册页面 因为我观察到后缀名发生变化了,但是出发点是错的,前 ...
- onchange onpropertychange 和 oninput 事件的区别
onchange 事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发. onpropertychange 事件却是实时触发,即每增加或删除一个字符就会触发,通过 js 改变也会触发该事件,但是 ...
- Oracle 10G RAC集群安装
一,基本环境配置 01,hosts cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loc ...
- 2018-2019-2 20162329 《网络对抗技术》Exp9: Web安全基础
目录 Exp9: Web安全基础 一.基础知识 1.SQL注入攻击 2.XSS跨站脚本攻击 3.CSRF跨站请求伪造 二.SQL注入 1. 命令注入 2. 数字注入 3. 日志欺骗 三.XSS攻击 1 ...
- fiddler抓包-5-Composer功能进行接口测试
前言 fiddler是个强大的抓接口工具,轻松看出接口的所有参数,这里介绍一个Composer功能它也可以进行接口测试,平时接口可能传参错误,我们可以拖拽接口来改参数直接再请求了,非常方便! 一.Co ...