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/

  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/findumars/p/7603129.html
Copyright © 2011-2022 走看看