zoukankan      html  css  js  c++  java
  • Qt on Android 资源文件系统qrc与assets

       使用 Qt 为 Android 开发应用时,有时我们的应用会携带一些资源文件,如 png 、 jpg 等,也可能有一些配置文件,如 xml 等,这些文件放在哪里呢?有两种方式:qrc和assets,咱们分别来看下。

    Qt Resource System

           qrc , Qt 的资源文件系统,很好用哦。看个图:

           你放在 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 虚拟文件系统,你的资源文件不会在程序启动时就加载到内存,比较节省资源。

           那资源文件怎么放呢?很简单,就是放在 Qt 项目目录下的 android/assets 文件夹内即可。

           只要你这么一放, Qt 编译时就会把 assets 内的文件打包到 APK ,然后就可以在 C++ 代码内访问了。

    使用 assets 的 Android 示例

           建立一个针对 Android 的项目。 创建 AndroidManifest.xml ,然后在 android/assets 目录下放一个 beauty.jpg 。删除项目的 widget.h 和 widget.cpp 。修改 main.cpp ,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #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();
    }

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

           OK,到此结束。

    https://greedysky.github.io/2016/04/03/Qt%20on%20Android%20%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9Fqrc%E4%B8%8Eassets/

  • 相关阅读:
    [编织消息框架][设计协议]bit基础
    android studio最简单的包名修改方法
    MySQL之四——浅谈 DML、DDL、DCL的区别
    MySQL之三——SQL优化
    MySQL之二——MySQL缓存机制
    MySQL之一——基础语法详解
    游戏测试相关内容
    第一篇博客
    mybatis中union可以用if判断连接,但是<select>中第一个select语句不能被if判断,因此可以从dual表中查询null来凑齐。union如果使用order by排序,那么只能放在最后一个查询语句的位置,并且不能带表名。
    博客园
  • 原文地址:https://www.cnblogs.com/findumars/p/7603129.html
Copyright © 2011-2022 走看看