首页| 论坛| 消息

标题:Qt开发安卓App时字体要注意的几点
作者:tompsontan
日期:2013-02-27 00:31
内容:

分享下我用necessitas在安卓上开发的经历,主要问题是在真机上中文字体变成了方框“口口”。

1.下面先在necessitas上新建一个Qt Quick 1 Application 来具体分析


2.再在main.qml加入中文


3.真机运行,字体出问题:

4.直接加入中文是不行的,要先在main.cpp中设置加入#include,并通过setFont()函数将安卓系统的字体设为程序默认字体:

//将字体文件名传给addApplicationFont,得到字体的Id
int fontId = QFontDatabase::addApplicationFont("/system/fonts/DroidSansFallback.ttf");
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString msyh = QFontDatabase::applicationFontFamilies ( fontId ).at(0);
QFont font(msyh,10);
app->setFont(font);
5.字体正常显示:


6.问题来了,qml的设计器里面看到的预览和真机运行时不一样:


#1 [tompsontan 02-27 00:52]
7.因为设计器默认使用的是系统字体(win7为宋体)



8.假如你在设计器里面把宋体改为了其它字体,例如“微软雅黑”,会发现qml中多了一行:
运行,发现字体又是“口口”,因此无法通过设计器来修改中文。
9.解决办法,将安卓的DroidSansFallback.ttf安装到win7系统中,安装之后多了一种字体,不过可能不叫DroidSansFallback,还是会出现上面的问题,因为字体的文件名和字体名会不一样,这时就需要用字体修改软件来修改字体名,改为DroidSansFallback,再安装字体。
#2 [tompsontan 02-27 00:56]
10.现在设计器里面的预览就正常了:


真机调试也可以正常显示,和设计器预览效果一致。
#3 [tompsontan 02-27 01:01]
由于本人为Qt的初学者,之前也只是集中精力在QtOpenGL,而Qt的其它方面并不熟悉,加上深夜发帖,如果有错,希望指出来,大家交流交流

源码:
#4 [uidab 02-27 11:40]
提示的很详细
#5 [yxkaibaoma 02-27 11:56]
楼主v5!~~~

<< 1 2 3 >> (1/5)

回复 发表
主题 版块