Chinaunix首页 | 论坛 | 博客

apt

  • 博客访问: 394487
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-10 15:52
文章分类

全部博文(121)

文章存档

2017年(2)

2016年(23)

2015年(96)

我的朋友

分类: C/C++

2015-05-12 16:48:44

Qt默认是不支持中文的,如果想要显示中文,需要在main函数中进行修改:
首先在main.cpp中添加头文件

点击(此处)折叠或打开

  1. #include <QTextCodec>

然后在main()函数开始出添加:

点击(此处)折叠或打开

  1. QTextCodec *codec = QTextCodec::codecForName("GB2312");
  2. QTextCodec::setCodecForLocale(codec);
  3. QTextCodec::setCodecForCStrings(codec);
  4. QTextCodec::setCodecForTr(codec);
添加了QTextCodec类的头文件包含。QTextCodec类提供了文本编码的转换功能。

使用了QTextCodec类中的静态函数setCodecForTr(),用来设置QObject::tr()函数所要使用的字符集,就像所看到的那样,tr()函数可以使用指定的字符集来对文本编码进行转换。这里使用了QTextCodec::codecForName(“GB2312”)指定使用“GB2312”字符集进行编码,读者也可以根据具体环境设置其他字符集。

为了能够显示中文,需要设置字符集,然后使用QObject::tr()函数将字符串进行编码转换。其实tr()函数还可以实现多语言支持,需要说明的是,setCodecForTr()函数最好的放置位置放在main()函数中的QApplication对象下面。Qt程序中所有要显示到界面上的字符串最好都使用tr()函数括起来,而对于不是要显示到界面上的字符串中如果包含了中文,可以使用QString()进行编码转换,这需要在主函数中添加如下代码进行设置:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));

添加这两部分代码后,可以显示汉字,而且在字符串中也不需要进行其他的处理。
对于单个程序,这样就可以了。我在第一次遇到这种情况时是在socket中,所以需要在client和server两个程序中同时添加这部分代码,才能让两个程序正常显示汉字。
阅读(2250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~