Qt on Android:资源文件系统qrc与assets
使用 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 示意图
那资源文件怎么放呢?非常easy,就是放在 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:资源文件系统qrc与assets的更多相关文章
- Qt on Android 资源文件系统qrc与assets
使用 Qt 为 Android 开发应用时,有时我们的应用会携带一些资源文件,如 png . jpg 等,也可能有一些配置文件,如 xml 等,这些文件放在哪里呢?有两种方式:qrc和assets,咱 ...
- android资源目录---assets与res/raw区别
android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0 字号:大中小 订阅 assets:用于存放需要打包到应用程 ...
- 【转】QT中添加的资源文件qrc时的路径问题小结
@2019-06-13 [小记] QT中添加的资源文件qrc时的路径问题小结
- 《Qt on Android核心编程》相关资源
有不少朋友反馈在搭建 Qt on Android 开发环境时遇到了问题,诸如 Android SDK 无法下载. jdk 找不到合适的版本号.创建 AVD 出错等等.为此我把与<Qt on An ...
- Qt on Android 核心编程
Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著 ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...
- [转] Android资源管理框架(Asset Manager)简要介绍和学习计划
转自:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与U ...
- Android资源管理框架(Asset Manager)简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...
- Android资源管理框架(Asset Manager)简介和学习计划
Android该应用程序包括两个部分组成的:代码和资源. 资源主要是与UI相关的东西,例如UI布局.和其他字符串和照片.代码和资源可以使独立的应用程序来组织的实际需求的基础上,在执行的时候UI.,就能 ...
- Qt on Android: Qt 5.3.0 公布,针对 Android 改进的说明
5月20日本,Qt 官方博客宣布 Qt 5.3.0 公布! 这个版本号聚焦在性能.稳定性和可用性的提升上,与 5.1 / 5.2 相比有非常大提升. 5.3.0 的主要变化: 稳定能.可用性大大提升 ...
随机推荐
- [ZJOI 2010] 数字计数
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1833 [算法] 数位DP [代码] #include <algorithm&g ...
- 【Codeforces 258B】 Sort the Array
[题目链接] http://codeforces.com/contest/451/problem/B [算法] 模拟 在序列中找到一段单调递增的子序列,将这段序列反转,然后判断序列是否变得单调递增,即 ...
- JUC集合-BlockingQueue
BlockingQueue 阻塞队列,支持两个附加操作. 1,在队列为空时,获取元素的线程会等待对列变为非空. 2,在队列为满时,存储元素的线程会等待对列可用. 使用场景: 生产者往对列里添加元素 消 ...
- List 常用方法解析
1.Count属性 (获得List中元素数目) 2.Add( ) 在List中添加一个对象的公有方法 3.AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素 ...
- 如何在Word的方框中打对号
在word中,选择“插入”-“符号”,选择字体为“wingdings”,在倒数第二个特殊字符既是方框中有对号的特殊字符. 1. 2. 3.
- 【Five-Minute Share】数据库内存分配设置
对于数据库分配的内存,经常会看到的一条准则是:将服务器75-80%的内存分配给数据库.这是一条比较常见的准则,但并不是绝对的.首先,我们需要保障操作系统运行本身所需的充足内存后,才能去考虑数据库所分配 ...
- Everything Be True FreeCodeCamp
function every(collection, pre) { // Is everyone being true? for(var i in collection){ if(!collectio ...
- scrapy 动态网页处理——爬取鼠绘海贼王最新漫画
简介 scrapy是基于python的爬虫框架,易于学习与使用.本篇文章主要介绍如何使用scrapy爬取鼠绘漫画网海贼王最新一集的漫画. 源码参见:https://github.com/liudaol ...
- vs code格式化代码快捷键
windows:shift+alt+F ubuntu: ctrl+shift+i
- Bonjour/Zeroconf with Arduino
转自:http://gkaindl.com/software/arduino-ethernet/bonjour Bonjour/Zeroconf with Arduino DownloadVersio ...