• 14543阅读
  • 14回复

[提问]label->setText中显示乱码的问题 [复制链接]

上一主题 下一主题
离线wzsiatf
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-11
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
我是新手,最近Qt for Windows7的creator中编写了一个小程序,其中利用到了label组建的setText显示几个汉字,即
ui->label->setText(tr("按下键盘上的A键试试!"));运行正常,但是显示却是乱码一样的字,不知道哪里错了?
离线dbzhang800

只看该作者 1楼 发表于: 2010-11-11
离线wzsiatf
只看该作者 2楼 发表于: 2010-11-11
回 1楼(dbzhang800) 的帖子
我按照你给我看的那文章里那样,加了那两句话,但是只有电完pushbutton出来的文字显示了,原来在pushbutton上的文字还是没有显示出来,不过很感谢你,你的链接受益匪浅!

只看该作者 3楼 发表于: 2010-11-12
你把源文件的格式改成UTF-8了么? 在windows下的System可能是GB2312吧.
离线wxj120bw

只看该作者 4楼 发表于: 2010-11-12
提醒下楼主 tr()里面最好放英文,然后再翻译一下,放中文不是很中统。

只看该作者 5楼 发表于: 2010-11-12
回 4楼(wxj120bw) 的帖子
恩, 的确是. 源文件的兼容性大打折扣.
离线wzsiatf
只看该作者 6楼 发表于: 2010-11-13
回 4楼(wxj120bw) 的帖子
可是我有三处用到setText(tr("')),里面是中文,只有一个是可以显示出来的
离线wzsiatf
只看该作者 7楼 发表于: 2010-11-13
回 4楼(wxj120bw) 的帖子
改成英文确实显示出来了!
离线g_tree
只看该作者 8楼 发表于: 2010-11-13
我一般会在QApplication a(argc, argv);之后立马加上一个QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

这样就可以按本地系统翻译了~~~不过之前如果打中文,到了其它语言的系统,应该也会出现乱码!
离线luoshupeng
只看该作者 9楼 发表于: 2011-05-03
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
离线dbzhang800

只看该作者 10楼 发表于: 2011-05-03
引用第9楼luoshupeng于2011-05-03 21:43发表的  :
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

呵呵,一旦使用这条语句,就说明你不准备让自己程序国际化了。既然不需要国际话,又为何用tr呢?
离线wbn0908
只看该作者 11楼 发表于: 2011-05-03
在主程序中加上#include <QTextCodec>和QTextCodec::setCodecForTr(QTextCodec::codecForLocale());就可以正常显示中文了
离线zhangshan594

只看该作者 12楼 发表于: 2011-07-21
回 1楼(dbzhang800) 的帖子
你没没有在主函数中添加中文显示的代码吧,即QTextCodec::setCodecForTr(QTextCodec::codecForLocale());及头文件#include<QTextCodec>吧。
离线yuxiao1111
只看该作者 13楼 发表于: 2011-10-09
我也遇到了这样的问题,在楼上的各种指导下,我也解决了,万分感谢!
离线孤※少
只看该作者 14楼 发表于: 2012-04-20
QTextCodec* codec = QTextCodec::codecForLocale();
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);

在main()里加上试试!
快速回复
限100 字节
 
上一个 下一个