问题:我用qtcreator编译后,在用交叉编译工具编译,在arm上面跑 ,
功能是:显示来自服务器的数据
在qt creator这边,由于ubantu是用的英文的,qtcreator本身就输入不了中文,编译好的东西放在arm板子中跑,arm中要是有中文字库的话,是应该可以显示中文的.但是给我的结果是,arm上显示乱码;
经过广大的网友的一些提示,自己也不断的调试,终于可以在arm上显示中文了
总结一下;
#include <QApplication>
#include "tripplanner1.h"
/********这里要加上这两个头文件*************/
#include "QTextCodec"
#include <QFontDatabase>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
/*这里要下载WenQuanYi+Micro+Hei.ttf字体,并且放到arm板子的/lib库下*/
/*其次是要添加以下这几行代码*/
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
int fontId = QFontDatabase::addApplicationFont("/lib/WenQuanYi+Micro+Hei.ttf");//*****
QString msyh = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(msyh,6);
QApplication::setFont(font);
TripPlanner tripPlanner1;
tripPlanner1.show();
return app.exec();
}
当我吧上面的这些设置好了之后,在调试后运行在arm上时,可以显示中文了.很开心.(此时是用的label显示的中文字),但是我用了textbrowser的,发现,在这里用用append追加中文字却还是乱码.又经过几经周着后,搞定了
QByteArray trainType=tcpSocket.readAll();//这里是我tcp要读取所以的数据,读到trainType里面
//QString text=QVariant(trainType).toString();//这里是之前显示乱码的时候的语句
QString text=QVariant(trainType).toString().fromUtf8(trainType);//周转后,加了fromUtf8(trainType),在textbrowser里面就可以显示中文了
textBrowser->append("***********this is the receive data***************");
textBrowser ->append(text);
自此,在我遇到的中文乱码的问题 就解决好了,希望您遇到同样的问题时,可以成功解决掉,
2018年08月17日14:15:32 今天是七夕节,七夕快乐,写给自己,也写给能够看到的您!