博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt on Android:资源文件系统qrc与assets
阅读量:5833 次
发布时间:2019-06-18

本文共 1330 字,大约阅读时间需要 4 分钟。

    使用 Qt 为 Android 开发应用时,有时我们的应用会携带一些资源文件,如 png 、 jpg 等,也可能有一些配置文件,如 xml 等。这些文件放在哪里呢?

    有两种方式:

  1. qrc
  2. 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 演示样例

    參考《》建立一个针对 Android 的项目。

    创建 AndroidManifest.xml 。然后在 android/assets 文件夹下放一个 beauty.jpg 。删除项目的 widget.h 和 widget.cpp 。改动 main.cpp ,例如以下:

#include 
#include
#include
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 系列:

 

转载于:https://www.cnblogs.com/yutingliuyl/p/6892646.html

你可能感兴趣的文章
careercup-树与图 4.1
查看>>
【LeetCode】83. Remove Duplicates from Sorted List
查看>>
微软职位内部推荐-SDE II
查看>>
android 圆角按钮和按钮颜色
查看>>
440P 测试三星ssd840pro 512g
查看>>
快速掌握Android 虚拟机(AVD)方法
查看>>
【转】BLE_CC2540_初学者入门指导
查看>>
SOA_Oracle SOA Suite and BPM Suite 11g官方虚拟机安装指南(案例)
查看>>
MySQL性能优化的最佳21条经验
查看>>
学习淘宝指数有感
查看>>
中型(60~200人)办公室的有线和无线网络方案
查看>>
区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理【转】
查看>>
给字符数组赋值的方法
查看>>
PHP微信授权登录信息
查看>>
Valgrind简单用法
查看>>
Android Fragment和FragmentActivity区别和用法
查看>>
Select count(*)和Count(1)的区别和执行方式
查看>>
brainfuck 解释器
查看>>
计算机基础知识(一)——进制转换
查看>>
Linux进程间通信——使用消息队列
查看>>