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

概述

用 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,其他的代码都是一样的。

然后来看看打包出来的文件包内容:
Qt for Android / ios 将图片或文件打包进安装包中_第1张图片
我们看到这里多了一个文件夹,里面包含了我们加入进去的翻译文件,OK,接下来看看如何引用该文件:

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

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

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

你可能感兴趣的:(Qt,for,Android,Qt,for,IOS,Qt)