搜档网
当前位置:搜档网 › Qt on Android:资源文件系统qrc与assets

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

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

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 示意图

那资源文件怎么放呢?很简单,就是放在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 ,如下:

[cpp]view plain copy

1.#include

2.#include

3.#include

4.

5.int main(int argc, char *argv[])

6.{

7. QApplication a(argc, argv);

8. QLabel label;

9. QPixmap pixmap("assets:/beauty.jpg");

10. label.setPixmap(pixmap);

11. label.show();

12.

13.return a.exec();

14.}

编译,运行,可以看到图4 :

图4 使用assets 的Qt on Android 示例OK,到此结束。

相关主题