Qt on Android:资源文件系统qrc与assets

    使用 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 演示样例

    參考《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:图文具体解释Hello World全过程 Windows下Qt 5.2 for Android开发入门 Qt for Android 部署流程分析 Qt on Android:将Qt调试信息输出到logcat中 Qt on Android: Qt 5.3.0 公布,针对 Android 改进说明 Qt on Android Episode 1(翻译) Qt on Android Episode 2(翻译) Qt on Android Episode 3(翻译) Qt on Android Episode 4(翻译) Qt for Android 编译纯Cproject Windows下Qt for Android 编译安卓C语言可执行程序 Qt on Android: Android SDK安装 Qt on Android: http下载与Json解析 Qt on Android 之设置应用名为中文 Qt on Android:让 Qt Widgets 和 Qt Quick 应用全屏显示 Qt on Android:如何适应不同的屏幕尺寸

 Qt on Android:使用JNI与第三方jar包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值