在QT中,通过QMessageBox类或者其他显示中文
2012-07-13 15:48
423 查看
【转】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。对于一些如从数据库中提取出来的文本,就不仅仅要用这个东西了,还要考虑其原本的编码,需要经过转换之后,与最终的编码相匹配方可正常转换。
这里附上加入代码前和加入代码后的两张截图
相关文章推荐
- QT程序中文显示的其他方法
- java通过jdbc插入中文到mysql显示异常(问号或者乱码)
- Qt 通过打开文件对话框,实行拖拽到textEdit显示文本或者点击文件显示文本
- 使用xshell登录中文版CentOS时,在xshell下显示中文乱码,通过如下办法可以有效的解决乱码问题
- 【QT环境搭建】qt字库的移植(使其很好的显示中文)
- Qt学习笔记-嵌入式qt程序支持显示中文
- 表单提交之后,通过request获取的中文数据显示乱码
- 不允许超级管理员同时登录,如果管理员登录时已经有其他管理员登陆了,则提示“您已通过其他浏览器登录,请退出后再登陆或者强制下线”,如果点击“强制下线”则进入后台管理中心,而以前登录的管理员下线。
- 不要通过Application Object或者其他全局静态变量来存放数据
- 解析 Qt 字库移植并能显示中文 (下篇)
- QT问题系列(6) - 关于设置qtcreator的ui界面显示中文问题
- Ubuntu QT显示中文
- Qt显示中文ansi字符串乱码问题解决方案
- Qt 中文显示 QMessageBox按钮中文显示
- Qt显示中文的问题详解
- Qt5.2显示中文方法!!!
- Qt之中文显示(QMessageBox、QLine…
- QT中如何将图片作为按键背景色以及中文显示
- 通过serverlet方式下载文件,不能显示中文的解决方法
- 使用起步科技WeX5,在win8或者win10操作系统studio中新建.w向导或其他的编辑窗口为什么显示不全?