在QT中,通过QMessageBox类或者其他显示中文

【转】Qt中汉字显示的简易方法【终结版】

有时我们可能需要直接使用代码来创建用户界面,但是这时候往往发现这样出来的界面往往有汉字的地方都是乱码。其实不仅仅是汉字,这样子直接来写出来的界面,不管用汉语也好,日语也好,朝鲜语也好,除了英文和拉丁文,最后肯定都是乱码,因为Qt默认解码是采用ASCII方式解码,遇到了你代码中的文字,明明是汉字却去查ASCII表,最后当然是乱码啦。

但是我们注意到用Designer创建的窗体里汉字显示确实好好的,这是为什么呢?看一份ui文件转换出的代码就可以知道了:

        menu_2->setTitle(QApplication::translate("MainWindow", "\345\205\263\344\272\216 &A", 0, Qapplication::UnicodeUTF8));

也就是说这里他们使用了一个转换,而且这个转换与QApplication 有关。那么我们的代码中可不可以使用类似的转换呢?当然可以,而且我这里有一个非常简便的方法:

在工程的main.cpp文件中加入:

#include <QTextCodec>  …        QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 

,这样,这个语句后面所有的代码,如window的实现中所有用tr()包围起来的代码最终都会以指定的UTF-8格式解读。当然,Windows下支持GB2312、UTF-8格式,建议采用UTF-8格式,一来这个编码格式越来越流行,二来Unix/Linux视窗系统下也默认支持UTF-8,将来如有移植必要无须修改编码。不过发现有的Windows系统不能支持UTF-8,那也没关系,只要改成GB2312就行啦。

tr()以一个ASCII码字符串为参数,返回一个QString。对于一些如从数据库中提取出来的文本,就不仅仅要用这个东西了,还要考虑其原本的编码,需要经过转换之后,与最终的编码相匹配方可正常转换。

这里附上加入代码前和加入代码后的两张截图


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章