QT写的程序通过交叉编译后 在arm上显示乱码问题

问题:我用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   今天是七夕节,七夕快乐,写给自己,也写给能够看到的您!

猜你喜欢

转载自blog.csdn.net/xiao_jj_jj/article/details/81776857
今日推荐