Qt4.8.6 ARM(DM3730)中文显示,文泉驿正黑

时间:2022-04-14 01:44:29

这类文章其实好多网友分享,但是这几天遇到一个奇葩问题,不得不记录一下。

一个DM3730开发板把文泉驿正黑字体拷贝到qt的fonts目录中,重启开发板后就能正常显示中文了,但是另外一块开发板却不行,就算把fonts目录中的其他字体都删除了,还是不能显示中文,中文都是空白。两块开发板是一起烧写制作的,按道理不应该出现这种现象,但是linux有时候就这么奇葩,可能是不小心改动哪儿了。现在又不想重新烧写一次,太麻烦了,因为毕竟只有字库这块有问题。

解决中文显示问题一般流程如下。

1.下载文泉驿正黑字体

我用的桌面版linux是RedHat,在/usr/share目录中包括了该字体。其他发行版linux不太清楚,现在把该字库上传,需要的可以下载。

下载链接:http://download.csdn.net/detail/caoshangpa/9609350

2.将字体拷贝到ARM开发板中

将字体拷贝到Qt的fonts目录中,我的是/usr/lib/qt/4.8.6/lib/fonts,并将该路径添加到环境变量,如下所示。

export QT_QWS_FONTDIR=/usr/lib/4.8.6/lib/fonts。

3.使用字体

在main函数中添加

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);

QFont font;
font.setPixSize(20);
font.setFamily(("WenQuanYi Zen Hei"));

//这里为何是WenQuanYi Zen Hei,参http://www.cnblogs.com/liu_xf/archive/2011/07/05/2098144.html

font.setBold(false);
a.setFont(font);

第一块开发板这样设置就可以正常显示中文了,但是第二块开发板却不行,必须按照下列步骤。

1.下载文泉驿正黑字体

2.将字体拷贝到ARM开发板中

这时不一定要拷贝的fonts目录中,我直接拷贝到和应用程序同一目录了。

3.使用字体

在main函数中添加

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QFontDatabase::addApplicationFont("wqy-zenhei.ttc");
QFont font;
font.setPixelSize(20);
font.setFamily("WenQuanYi Zen Hei");
font.setBold(false);
a.setFont(font);

注意多了QFontDatabase::addApplicationFont("wqy-zenhei.ttc");这一句,用于指定自定义字体,由于我将字体放到了应用程序所在目录,直接写文件名wqy-zenhei.ttc就行。

重启开发板,中文终于可以正常显示了。

参考链接:http://www.cppblog.com/biao/archive/2012/01/01/163345.html


Qt4.8.6 ARM(DM3730)中文显示,文泉驿正黑