QtEmbedded下汉字显示成乱码问题的解决:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt/Embedded下汉字显示成乱码问题的解决:
本人通过一段时间的研究,查资料和实验,解决了在Qt/Embedded下汉字显示为乱码的问题。
假设我们在Linux环境下,安装Qte及Qtopia的目录是/usr/local/qt_x86, QT环境建立后,在该目录下则有qt-2.3.7及qtopia-1.7.0目录(假设我们用的版本是qt-emdedded-2.3.7和qtopia-free-1.7.0)。
问题的现象是:执行应用程序后,汉字显示成乱码或小方块。
问题原因及解决办法:
1、编译qte库时,对中文textcode的支持未编译进去。
解决办法:在已经创建好的Qte及Qtopia环境下,我们要修改
/usr/local/qt_x86/qt/src/tools目录下的qconfig-qpe.h文件,将包含CODECS 的行注
释掉(3行),然后重新编译Qte, 编译后的QT库就能够对中文textcode的支持了。
Qte默认的字体是Helvetica, 没有中文。
所以在自己的应用程序中指定一个Qte自
带的中文字体unifont,这样就可以了。
后面附一段自己实验成功的程序。
编译自己
的应用程序时,环境变量设置如下: (当前目录为/usr/local/qt_x86)
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPA TH=$TMAKEDIR/lib/qws/linux-generic-g++
export PA TH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PA TH
源程序如下:
study3-4.cpp
#include <qapplication.h>
//#include <qwidget.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qlabel.h>
#include <qtextcodec.h>
class MyMainWindow:public QWidget
{
public:
MyMainWindow();
private:
QPushButton *b1;
QLabel *label;
};
MyMainWindow::MyMainWindow()
{
qApp->setDefaultCodec( QTextCodec::codecForName("GBK") );
setGeometry( 100, 100, 200, 170);
b1=new QPushButton( tr("按钮"), this );
b1->setGeometry(20, 20, 100, 80);
b1->setFont(QFont("unifont", 16, QFont::Bold) );
label = new QLabel( this );
//label->setText( tr("中文标签" ) );
label->setGeometry( 20, 110, 180, 50 );
label->setText( tr("这是第一行\n这是第二行" ));
label->setFont(QFont("unifont", 16, QFont::Bold) );
label->setAlignment( AlignCenter );
}
int main(int argc, char **argv)
{
QApplication a(argc, argv);
MyMainWindow w;
a.setMainWidget( &w);
w.show();
a.exec();
}
工程文件如下:
//study3-4.pro
TEMPLA TE = app
LANGUAGE = C++
CONFIG += qt warn_on release
SOURCES += study3-4.cpp。