Linux下Qt编程怎么显示中文?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下Qt编程怎么显示中文?相关的知识,希望对你有一定的参考价值。

程序代码是:

#include <qapplication.h>
#include <qwidget.h>
#include <qlabel.h>
#include <qtextcodec.h>
int main(int argc,char* argv[])

QApplication app(argc,argv);
//QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

QWidget* pwidget=new QWidget;
QLabel label(pwidget);
label.setText(QObject::tr("你好!"));
pwidget->show();
return app.exec();


make以后显示错误:
error:'setCodecForLocale' is not a member of 'QTextCodec';
error:'setCodecForTr' is not a member of 'QTextCodec';
error:'setCodecForCStrings' is not a member of 'QTextCodec';
不知道什么问题?请指点!

参考技术A 你的是qt3版本?
没平台,你试下下面的方法:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());追问

不行,我用的是Qtopia-2.2.0版本,嵌入式Qt!

追答

那你得看下他的API手册吧。。

参考技术B 你可以这样试试。
#include <QTextCodec>
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec );
QTextCodec::setCodecForLocale(codec );
QTextCodec::setCodecForCStrings(codec );
参考技术C   C/C++ code#include <QtGui/QApplication>
#include <QtCore/QTextCodec>
#include <QDir>
#include <QTranslator>
#include "MainForm.h"

int main(int argc, char *argv[])

QApplication a(argc, argv);
QDir::setCurrent(QApplication::applicationDirPath());
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
setupTranslator();
a.setApplicationName("中文程序");

TMainForm w;
w.show();

return a.exec();
参考技术D Qt 没有写过代码 我都是用gtk
不过看错误提示 很明显
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
这3段设置错了
我一下我去看看 代码应该怎么写本回答被提问者和网友采纳
第5个回答  2013-04-11 你的是qt5.0版么?setCodecForTr等被舍弃了

嵌入式Linux下Qt的中文显示

一般情况下,嵌入式Qt界面需要中文显示,下面总结自己在项目中用到的可行的办法

1,下载一种中文简体字体,比如我用的是”方正准圆简体“,把字体文件放在ARM开发板系统的Qt字库中,即/usr/lib/fonts下

2,添加ARM开发板上的环境变量,打开vi /etc/profile,添加

 

[cpp] view plain copy
 
  1. export QT_QWS_FONTDIR=/usr/lib/fonts  


3,在main.cpp中,添加

 

[cpp] view plain copy
 
  1. QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());  
  2. QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));  

4,引用时用tr()


以上是关于Linux下Qt编程怎么显示中文?的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux下Qt的中文显示

linux中qt界面读取usb文件时候,中文文件显示不正常,全是???,英文是正常的,怎么转换一下???

QT命令行编译时中文显示乱码怎么解决,满意追加

linux下framebuffer显示图形的基本思想是啥

怎么在Linux下安装QT?

在QT编程中,QGraphicsView是怎么显示出图片的