概述

用 Qt 做程序开发,图片或翻译文件的引用有两种方式,一种是直接引用,本地图片, 一种是编译到资源文件中,其实直接添加在资源文件中是最方便的,不需要考虑文件存放的问题,但是这样可能带来的问题是启动软件的速度可能会比较慢,另外,如果图片比较多的话,那启动程序后占用内存也会比较高,所以有时候会考虑用第一种方式来实现。那么问题来了,如果是用 Qt 做移动开发,该怎么把这些图片或翻译文件或者其他文件一起打包进安装包中并能正常引用呢?其实用 Qt 做 Android 和 IOS 的开发,要实现该功能的做法还不太一样,这里做个简单的总结。

Qt for Android

首先来看看 Qt 做 android 开发该怎么将图片资源一起打包。
打开 Qt 工程文件pro,并添加如下代码

android{
langs.files += linguist/*.qm
langs.path = /assets/Language
INSTALLS += langs
}

注意,这里只是我的示例写法,linguist是我本地和工程文件 pro 同级目录的文件夹,里面包含了翻译文件*.qm, langs字段是可以随便定义的,首先指定langs.files 文件目录,然后指定 langs.path 将要存放到 Android 程序包中的路径,这里需要注意,通常这种三方文件在 Android 中都是存放到assets目录下,所以这里我们讲翻译文件存放到assets的Language文件夹中去,最后直接 INSTALLS即可。

这样编译出来的 apk 中,加压后会发现已经生成一个assets文件夹,并且在改文件夹中存放了我们已经添加的翻译文件。

此外,如果要将图片资源也打包进去,可以使用同样的方式来实现,这里就不多说了。

接下来我们看一下如何引用我们存放好的这些文件,看以下示例:

assets:/Language/xx.qm

直接通过以上方式就可以引用了。

Qt for ios

要实现同样的功能,ios 的做法有点不一样,来看看示例:

ios:{
extpath = /
langs.files = linguist/*.qm
langs.path = $$extpath/linguist
QMAKE_BUNDLE_DATA += langs
}

这里先指定了一个当前目录变量extpath,其实可有可无,主要便于langs.path 指定文件存放路径。注意,这里的不再是 INSTALL 而是QMAKE_BUNDLE_DATA,其他的代码都是一样的。

然后来看看打包出来的文件包内容:

我们看到这里多了一个文件夹,里面包含了我们加入进去的翻译文件,OK,接下来看看如何引用该文件:

QString path = QCoreApplication::applicationDirPath();
path += "/linguist";

由于该目录是和程序目录同级的,所以直接获取应用程序所在的目录,然后加上文件夹名称就可以拿到文件路径了,这个很简单,就不再赘述。

重点是要看到编译这两个平台软件时实现该功能的区别点,其他的就好办了。

Qt for Android / ios 将图片或文件打包进安装包中相关推荐

  1. [转]Asp.net 将js文件打包进dll 方法

    Asp.net 将js文件打包进dll 方法 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚 ...

  2. Windows Phone 8安装包中的文件和独立存储区中的文件访问

    安装包中的文件: Windows Phone 8访问安装包中的文件可以直接采用相对路径的形式,"apps/readme.txt".例如:FileStream stream = Fi ...

  3. 将xml文件打包进dll(或exe)

    经常,为了安全,我们需要将xml文件加密或者打包进dll文件中,那么如何将xml文件打包进dll中呢?在.net中,为我们提供了很好的方式: 选中该xml文件,将其属性中的"生成操作&quo ...

  4. Qt for Android 程序实现对手机文件的导入打开与导出保存

    一.概述 在Qt for Android下程序要实现这样的功能:对创建的数据以txt文件格式保存导出到手机内部存储器,并且可以随时的加载,导入到手机上运行的程序中.但是在Qt for Android下 ...

  5. iOS获取相册视频文件封面图 选取手机中的音频、视频文件并导出数据。

    应项目需求,需要实现本地选取并上传图片.音频和视频文件. 其中选取图片这块有很多开源框架,不再赘述.本文主要是采用iOS自带的类MPMediaPickerController 来实现UIImagePi ...

  6. (转)[Android分享] Android中用Ant把ndk的so文件打包进apk

    在用ant进行打包apk文件时,如果用到ndk,那么如何把so文件打包进去呢? 其实很简单,就在target为package的xml段里加上这2行 <arg value="-nf&qu ...

  7. 程序打包(安装包制作,Inno setup打包教程,QT程序打包)

    一.简介 本文主要讲述如何将QT程序打包成安装包,提供给其他人使用.(打包其他程序同理) 二.准备阶段: 2.1 下载并安装打包工具 Inno setup中文版 密码:id09 2.2 将QT程序DL ...

  8. Qt 在mac上使用证书签名并生成pkg安装包

    @[TOC](Qt 在mac上生成pkg安装包)## 标题 1.使用Qt Creator编译出Release版本 2.将生成的app程序拷贝到新的目录 3.使用macdeployqt添加依赖库 mac ...

  9. Android使用Service从服务器上下载一个安装包的全过程

    前言:在这里完成了一个完整的从服务器上下载数据的实例! 一.我使用的时OkHttp进行网络通信,所以首先在gradle的dependencies中添加如下依赖: compile 'com.square ...

最新文章

  1. 谷歌开源EfficientDet:实现新SOTA,又快又准的目标检测器
  2. Spring JDBC详解
  3. 成功解决UserWarning: Update your `Conv2D` call to the Keras 2 API问题
  4. POS机C井例子代码(2)
  5. Python项目中 封装日志模块logging 及快速调用方法
  6. 解决ros::TimeNotInitializedExcep
  7. android simple-xml,使用Maven构建Android项目-dexer在simple-xml依赖项上失败
  8. springboot 项目中在普通类中调用dao层的mapper 出现空指针异常
  9. Halcon 4点单标相机外参
  10. Vijos P1975 扫雷游戏【谜题】
  11. 网游源码完整服务端_【每日源码】微人事是一个前后端分离的人力资源管理系统,项目采用SpringBoot+Vue开发。...
  12. For ourselves
  13. Taylor Swift - Mean-pdf
  14. 利用python爬取数据并保存到MySQL中
  15. day2-运算符和分支
  16. oracle sys.dbms job,DBMS_JOB,dbms_ijob用法
  17. 高中数学教科书选修系列介绍
  18. Ubuntu安装opencv的viz模块
  19. RabbitMq详解+SpringBoot整合RabbitMq快速入门
  20. 使用 zx 编写在 Node 中编写 Bash 脚本

热门文章

  1. 视频“双录”全新发布,助力金融业务办理高效合规
  2. 漫谈企业级SaaS的多租户设计
  3. 数据结构+算法——错题总结
  4. Redis(七)分布式锁
  5. 快速生成树(RSTP)和传统生成树(STP)的区别(华为数通HCIE认证面试真题)...
  6. Android学习笔记(三):android画图之paint
  7. android10分区镜像,分区和映像  |  Android 开源项目  |  Android Open Source Project
  8. jenkins active exited(待编辑)
  9. python中文件位置的书写
  10. Nginx 301跳转踩坑总结