zoukankan      html  css  js  c++  java
  • 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中找到一键清除缓存后重新编译的方法,找到后分享,也欢迎知道的大神给指点一下!

  • 相关阅读:
    损失函数
    numpy中的broadcast
    混合模型
    贝叶斯学习
    python3中输出不换行
    C++11 实现 argsort
    Python中的闭包
    C语言 fread()与fwrite()函数说明与示例
    DFT与傅里叶变换的理解
    MISRA C:2012 Dir-1.1(只记录常犯的错误和常用的规则)Bit-fields inlineC99,NOT support in C90 #pragma
  • 原文地址:https://www.cnblogs.com/MakeView660/p/11309545.html
Copyright © 2011-2022 走看看