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

  • 相关阅读:
    centos6.5 安装redis自动启动
    正则去除字符串中的特殊字符
    数据库存储去重
    pymysql.err.ProgrammingError: (1064)(字符串转译问题)
    [转] Linux下SVN的三种备份方式
    ASP.NET ASHX中访问Session
    ionic 里使用 iframe 可能遇到的问题
    ionic $http 无法正常访问外部web服务器的问题
    Mac下80端口相关
    IIS7 无法写入配置文件web.config 错误
  • 原文地址:https://www.cnblogs.com/MakeView660/p/11309545.html
Copyright © 2020-2023  润新知