开发板和qt中文显示异常处理
使用beagleboneblack开发,陆陆续续遇到很多问题,再次记录下,开发板中文显示异常解决办法。
问题描述
我的板子是beagleboneblack,移植的官方系统 bone-debian-8.4-iot-armhf-2016-05-13-4gb.img,没有图形界面,移植qt5.6并且安装了X图形系统后,通过xinit启动qt程序,发现qt中文乱码或者无法显示,并且开发板终端命令行也无法打印中文。以下是解决办法。
安装系统字库
http://hwcrazy.com/7ff6162065f611e183d8000d601c5586/
首先,开发板的命令行和文本中无法使用中文,是因为系统没有安装字库或者设置错误,使用locale 查看设置信息。
使用命令sudo locale-gen en_US.UTF-8安装本地字库
然后修改/etc/default/locale
1 LANG=”zh_US.UTF-8”
2 LANGUAGE=”zh_US.UTF-8”
到此安装完毕,使用locale -a可以查看到刚刚安装的字库,有几十个;如果只有几个那么就是安装失败。
最后一步 重启
重启后,就可以在系统中使用中文了。
安装qt字库
系统中安装了字库后,当我使用xinit qtTEST时,发现我的qt程序还是不能显示中文,我的现象是中文用空格取代了。通过百度找到解决办法,原文blog。
不过,在此我还是要记录一下,因为这个轮子太少了,为了解决这个中文问题,耽误了很多时间。
首先下载qt的字库 DroidSansFallback.ttf 密码: kf9d
然后解压文件,并复制到/lib/fonts/
最后在qt代码中使用字库
#include <QApplication>
#include <QPushButton>
#include <QDebug>
#include <QFontDatabase>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
int id = QFontDatabase::addApplicationFont("/lib/fonts/DroidSansFallback.ttf");
QString msyh = QFontDatabase::applicationFontFamilies (id).at(0);
QFont font(msyh,10);
qDebug()<<msyh<<endl;
font.setPointSize(20);
a.setFont(font);
QPushButton *btn = new QPushButton("a中文b我是中文!");
btn->show();
return a.exec();
}
在开发板中qmake -project;qmake;make;run
问题完美解决