在Qt for Android开发中发现有些手机刷机后会出现字体不再是安卓默认字体DroidSansFallback,由于Qt开发的安卓应用会使用手机默认的字体,导致同一款APP现在不同手机上字体种类、大小等都不一致。因此产生统一字体,直接将字体文件加入到APP应用的想法。
该方案可以解决以下两种情况:
(1)Qt移植到移动端或嵌入式平台时出现中文乱码的情况;
(2)想把某种字体文件设置为Qt应用程序的默认字体。
以下方法本人在Qt for Android/IOS/ARM_Linux上均实测过,可以放心使用,故分享出来:
第一步:将字体文件加入到资源文件中(此处以安卓系统默认字体DroidSansFallback.ttf为例);
第二步:main.cpp中加入以下代码:
//设置DroidSansFallback.ttf字体为程序默认字体,将字体文件打包进apk
int fontId = QFontDatabase::addApplicationFont(":/demos/rssnews/content/font/DroidSansFallback.ttf");
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString androidFont = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(androidFont);
QGuiApplication::setFont(font);
其中addApplicationFont()中加入字体文件的路径,由于已作为资源文件加入到qrc,故以:/开头表示读取qrc下的路径。若使用后发现不能产生效果,很可能是此处路径没有设置正确。