Qt on Android:资源文件系统qrc与assets
来源:互联网 发布:淘宝卖东西包装怎么办 编辑:程序博客网 时间:2024/05/22 12:58
使用 Qt 为 Android 开发应用时,有时我们的应用会携带一些资源文件,如 png 、 jpg 等,也可能有一些配置文件,如 xml 等,这些文件放在哪里呢?
有两种方式:
- qrc
- assets
咱们分别来看下。
the Qt Resource System
qrc , Qt 的资源文件系统,很好用哦。看个图:
图1 qrc 示意图
你放在 qrc 里的文件,如 copy.png ,会被编译到 exe 文件中(Android应用是 libapplication.so )。当你运行应用时,这些资源也会被加载到内存。如果你的资源很大,这是个问题。
如果是在 Android 平台上,你还有另外一个选择。
Android 的 assets
Android 项目目录中有一个 assets 目录,该目录内放置的文件会原封不动打包到 APK 中,APK 在 Android 系统安装时, assets 不会被安装到应用目录下,注意,它还在 APK 里哦,但是应用可以访问这个文件夹内的资源!
Qt 利用了这种机制,实现了 assets 虚拟文件系统,我们常见的 QFile 、 QPixmap 、 QImage 等,都可以通过 "assets:/" 的方式来访问 assets 内的文件。
使用 assets 虚拟文件系统,你的资源文件不会在程序启动时就加载到内存,比较节省资源。
看一个图:
图2 assets 示意图
那资源文件怎么放呢?很简单,就是放在 Qt 项目目录下的 android/assets 文件夹内即可。如图3:
图3 使用 assets 的目录结构
只要你这么一放, Qt 编译时就会把 assets 内的文件打包到 APK ,然后就可以在 C++ 代码内访问了。
使用 assets 的 Android 示例
参考《Qt on Android:图文详解Hello World全过程》建立一个针对 Android 的项目。
创建 AndroidManifest.xml ,然后在 android/assets 目录下放一个 beauty.jpg 。删除项目的 widget.h 和 widget.cpp 。修改 main.cpp ,如下:
#include <QApplication>#include <QLabel>#include <QPixmap>int main(int argc, char *argv[]){ QApplication a(argc, argv); QLabel label; QPixmap pixmap("assets:/beauty.jpg"); label.setPixmap(pixmap); label.show(); return a.exec();}
编译,运行,可以看到图 4 :
图 4 使用 assets 的 Qt on Android 示例
OK,到此结束。
回顾一下 Qt on Android 系列:
Qt on Android:使用JNI与第三方jar包
《Qt on Android核心编程》介绍
- Qt on Android:资源文件系统qrc与assets
- QT引用资源qrc
- Qt导入.qrc资源文件
- android raw与assets资源
- android assets与raw资源
- QT中的资源文件的编写(qrc)
- 写一个Qt资源文件(qrc)
- Qt利用qrc文件添加图标资源
- qt qrc资源没有加载成功
- 【QT笔记】qrc文件添加资源
- VS2010+QT 添加资源文件(.qrc)
- android资源目录---assets与res/raw的不同assets
- android res与assets资源的区别
- android res与assets资源的区别
- Visual studio打不开Qt资源文件qrc的解决办法(无法使用Qt的qrc编辑器)
- Qt Resource System Qt资源体系(qrc rcc)
- Android 的assets文件资源与raw文件资源读取
- VS2005下QT学习笔记-导入.qrc资源文件
- C++ cin输入流详解
- 类的成员对象变量何时构造
- C#简易记事本
- java特性 多态
- 为什么很多人不喜欢做程序员?甚至讨厌程序员?
- Qt on Android:资源文件系统qrc与assets
- poj 3208 Apocalypse Someday(数位dp)
- Null value was assigned to a property of primitive type setter of cn.itcast.oa.domain.Forum.topicCou
- poj 1182 食物链
- 使用jsp过滤器实现登录权限
- 添加手势交互
- linux服务器遭受攻击后对系统检查和安全防范
- 后台服务日志(log4cplus)输出规范
- java抽象类与接口区别