QML使用资源系统

简述

Qt 资源系统允许将资源文件作为二进制文件存储在可执行文件中,这在构建混合的 QML/C++ 应用程序时非常有用,因为它通过资源系统的 URI 方案引用 QML 文件(以及其他资源,例如:图片和声音文件),而不是文件系统资源的相对路径或绝对路径。

  • 简述
  • 使用资源系统
  • 实际应用

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

使用资源系统

要在混合的 QML/C++ 应用程序中使用资源系统:

  • 创建一个 .qrc 资源集合文件(以 XML 格式列出资源文件)
  • 从 C++ 中,加载主 QML 文件(使用 :/prefix 将其作为一个资源,或使用 qrc 方案将其作为一个 URL)

一旦完成该过程,QML 中以相对路径指定的文件都将从资源系统中加载。资源系统的使用对 QML 层完全透明,这意味着所有的 QML 代码应该使用相对路径引用资源文件,而不是使用 qrc 方案。该方案只应在 C++ 代码中使用,来引用资源文件。

注意: 如果使用资源系统,那么只要更改 QML 源文件,就必须重新编译应用程序,以便更新包中的资源。

实际应用

来看一个简单的示例,在 QML 中加载一张炫酷的图片(Logo ~O(∩_∩)O~)。

应用程序的目录结构如下所示:

  • project/
    • project.pro
    • main.cpp
    • main.qml
    • resource.qrc
    • images/
      • background.png

main.qml 和 background.png 将被打包为资源文件,这是在 resource.qrc 中完成的:

<!DOCTYPE RCC>
<RCC version="1.0">

<qresource prefix="/">
    <file>main.qml</file>
    <file>images/background.png</file>
</qresource>

</RCC>

由于 background.png 是一个资源文件,main.qml 可以使用 resource.qrc 中指定的相对路径来引用它:

import QtQuick 2.3

Image { source: "images/background.png" }

为了让 QML 正确地定位资源文件,main.cpp 使用 qrc 方案将主 QML 文件(main.qml) 加载为资源文件:

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    // 创建一个基于 QWindow 的视图,来显示 QML 的内容
    QQuickView view;
    view.setSource(QUrl("qrc:/main.qml"));
    view.show();

    return app.exec();
}

最后,project.pro 使用 RESOURCES 变量来指示 resource.qrc 应该被用于构建应用程序资源:

# 告诉 qmake 这是一个应用程序
TEMPLATE = app

# 声明了要从 C++ 使用的 Qt 库
QT += qml quick
CONFIG += c++11

SOURCES += main.cpp

# 告诉 qmake 该资源集合应该被内置到可执行文件中
RESOURCES += resource.qrc
时间: 2024-09-20 05:49:29

QML使用资源系统的相关文章

Qt之资源系统

简述 Qt 的资源系统用于存储应用程序的可执行二进制文件,它采用平台无关的机制.当你的程序总需要这样的一系列文件(图标.翻译文件等)并且不想冒丢失某些文件的风险时,这就显得十分有用. 资源系统基于 qmake.rcc(Qt 资源编译器) 和 QFile 之间的紧密合作. 简述 资源集合文件qrc 外部二进制资源 内编译资源 压缩 在程序中使用资源 在库中使用资源 资源集合文件(.qrc) 与程序相关的资源在被指定在一个 .qrc 文件中,其基于 XML 的文件格式列出了磁盘上的文件,可以为它们指

《细说 QML》

关于命名 "中文是最叼的"...原本想给本系列也起一个很"叼"的名字,无奈笔者语言匮乏,绞尽脑汁才想出一个还算凑合的名字 - <细说 QML>,关于"细说",新华词典中有记载: 细说 [xì shuō]:详细地解说,也叫"细谈". 果然,不仅意美.音美.而且形更美...perfect! 从现在开始,我们将一起走进 QML 的世界.在这里,你不仅能够体验到 QML 的魅力,感受到编程的快乐,还可以顺便学习一门语言,成

WPF学习之资源-Resources

WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过ResourceDictionary的支持就可以通过资源来实现换肤功能,在ExpressionBlend中设计的酷炫造型也可以通过导出成资源来很容易的被程序员所引用,本地化的实现,访问另外程序集的嵌入式资源等等.这些都给我们提供了丰富的手段通过资源访问架构来构建丰富的富媒体应用程序.本文简单讲解了WPF Resources的分类及其常见用法,并简单

《Programming WPF》翻译 第6章 3.二进制资源

尽管ResourceDictionary和系统级别的资源适合于作为数据存在于对象中, 然而,并不是所有的资源都能很好的满足这个模型.能够处理二进制流通常是很 有用的.例如,图像,声频和视频,都是有效地二进制的代表,但是这些资源在 xaml内都没有相应的标签,而且毕竟这些对象通常表现为底层数据的包装.标记 语言本身代表了一种挑战:xaml页面必须编译到我们的应用程序中.因此,需要 一种处理二进制流的方法. WPF并未引进任何新技术处理二进制数据..NET框架已经提供了处理内嵌二进 制流的机制,WP

号外:马克斯视频建站系统被CC视频收购了!

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我想做站的朋友没有几个不知道maxz这个视频分享程序吧!我的小站www.200133.cn 也是用这个程序做的!也帮我赚了一点点小钱!如今中国网络上,80%的电影都是maxz搭建!今年还出了cms版本的!真的很不错的程序!让做电影站就象上个厕所一样容易! 然而今天,当我进入马克斯论坛的时候,发现居然跳到了Bokecc 播客CC官方论坛,我还以

【ANDROID游戏开发二十七】讲解游戏开发与项目下的HDPI 、MDPI与LDPI资源文件夹以及游戏高清版本的设置

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/389.html 今天一个开发者问到我为什么游戏开发要删除项目下的hdpi.mdpi和ldpi文件夹:下面详细给大家解答一下: 首先童鞋们如果看过我写的<[Android游戏开发二十一]Android os设备谎言分辨率的解决方案!>这一节的话都应该知道Android从1.6和更高,Google为了方便开发者对于各

Qt之生成Window资源文件(.rc 文件)

简述 qmake 可以随意地自动生成一个适当填充的 Windows 资源文件.本节主要讲解如何用 qmake 处理一个 Windows 资源文件,并将其链接到一个可执行应用程序(EXE)或动态链接库(DLL). 简述 详细说明 生成 rc 文件 系统变量 windres 示例 更多参考 详细说明 一个链接的 Windows 资源文件包含许多元素,可以由其 EXE 或者 DLL 来访问.然而,Qt 资源系统应当以独立于平台的方式访问链接资源.但在链接的 Windows 资源文件中,有一些标准元素只

国土资源报原总编受贿获刑13年

宣判完毕后,刘允洲被带出法庭时被媒体团团围住摄/记者 曹博远 本报讯(记者 王巍)今天上午,中国国土资源报社原社长.总编刘允洲因受贿200余万元被一中院一审判处有期徒刑13年.作为国土资源系统内部报纸的掌门人,刘允洲上通下达,跟浙江省国土资源厅厅长打声招呼便有180万元的财物进账. 上午9时40分,64岁的刘允洲的妻子女儿在其他家人的陪同下来到法庭.刘允洲被带进法庭时,不住地回头看向家人.刘允洲获刑离开时,他的妻子和女儿在一旁含着眼泪喊:"一定要坚强." 法院审理认可了公诉机关的指控,

电子政务系统安全防护方案

1.电子政务系统概述 网络技术的发展已经深入到社会生活的各个方面.网络新业务的不断兴起,为国内政府部门日常办公提供了极大的便利,通过政府网上办公系统.网上视频会议系统.电话语音系统.互动式政府网站 系统.门户型政府网站系统等应用,极大地提高了政府部门的办公效率.在党十六大报告中明确指出,以信息化带动工业化,加快国民经济结构的战略性调整,实现社会生产力的跨越式发展,是电子政务建设的首要任务.国家信息化领导小组决定,将推进电子政务建设作为今后一个时期我国信息化工作的重点.<我国电子政务建设指导意见>