QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1188|回复: 13

Qt desinger 中控件中可以加入中文,为什么在运行是

[复制链接]
发表于 2004-5-24 11:49:26 | 显示全部楼层 |阅读模式
在Qt desinger中设计对话框时可以加入中文
但是将该对话框链接到程序时,显示出来就是乱码
这个对话框我是用uic命令生成cpp文件的,这个cpp文件中所有中文字符都是乱码,这是为什么?
谢谢!!
发表于 2004-5-24 12:32:03 | 显示全部楼层
是不是用了utf8编码了啊?查看时改一下编码看看。
回复

使用道具 举报

发表于 2004-5-24 12:32:05 | 显示全部楼层
路过,不会qt
回复

使用道具 举报

发表于 2004-5-24 13:20:10 | 显示全部楼层
你在designer里加中文
存储时存为utf8
然后编译器遇到这些编码就会出错
建议界面写英文
然后做翻译软件
文档里都有的
回复

使用道具 举报

发表于 2004-5-24 17:15:35 | 显示全部楼层
先用个简单办法应付先,如果你想好好深究,可以找些书看看,或者就Qt Designer自带的帮助文档吧,解释的非常清楚。
下面的方法其实也是Qt Designer文档里的一种简便的方法:

QCString locallyEncoded = "配置被修改,将在重新启动程序后生效";
QTextCodec *codec = QTextCodec::codecForName("GB18030");
QString unicodeString = codec->toUnicode( locallyEncoded );
       
QMessageBox::information(this,"VVDict -- Setting changed",unicodeString,QMessageBox::Ok);

这是我程序的一段代码,这样就可以在弹出的对话框中正常显示中文了。比如QButton之类的caption,text,在代码里也可以这样处理。
回复

使用道具 举报

发表于 2004-5-24 17:20:09 | 显示全部楼层
你说的程序乱码的问题,文档存储的时候会使用utf8编码,所以如果你打开文件看到中文是乱码,没关系,程序编译运行的时候都是会正常显示的。Qt中的字符串都使用Unicode码
回复

使用道具 举报

 楼主| 发表于 2004-5-24 19:55:20 | 显示全部楼层
我一开始也能正常显示,可是现在不知道怎么回事就编译出错,有的字符显出乱码
回复

使用道具 举报

 楼主| 发表于 2004-5-25 09:36:03 | 显示全部楼层
你说的那个方法好像没办法实现 在编写源代码时根本无法输入中文 那这一行
QCString locallyEncoded = "配置被修改,将在重新启动程序后生效";
就没法用了
回复

使用道具 举报

发表于 2004-5-25 17:39:42 | 显示全部楼层
不能输入中文??你是用什么写代码的?
回复

使用道具 举报

 楼主| 发表于 2004-5-25 17:45:03 | 显示全部楼层
c++在kdevelop中写的
回复

使用道具 举报

 楼主| 发表于 2004-5-26 09:40:25 | 显示全部楼层
用kwriter可以输入中文吗
如果可以 在程序里可以显示吗?
回复

使用道具 举报

发表于 2004-5-26 09:53:18 | 显示全部楼层
当然可以,Kwrite很好用啊.我用Kwrite写的程序中文就可以正常显示.不过我的代码都是在Qt Designer里面写的. 而且编译出错应该不是由于字符串是乱码的原因吧?
回复

使用道具 举报

 楼主| 发表于 2004-5-26 10:55:56 | 显示全部楼层
编译出错是由于我在qt designer 里加的控件上面的中文 生成代码时,代码中为控件设文本代码 比如setText这个函数 参数中设置的文本得加引号 可是有些却少了引号 有语法错误
回复

使用道具 举报

发表于 2004-5-26 11:07:51 | 显示全部楼层
designer下按utf8存储
建议使用上面朋友说的
QCString locallyEncoded = "配置被修改,将在重新启动程序后生效";
QTextCodec *codec = QTextCodec::codecForName("GB18030");
QString unicodeString = codec->toUnicode( locallyEncoded );

QMessageBox::information(this,"VVDict -- Setting changed",unicodeString,QMessageBox::Ok);
这样的方法
不过你可以写一个宏
这样你就可以使用GB18030编码的汉字了

这时就不要在designer下写代码了
估计kate里应该是gb18030的

good luck
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 06:34 , Processed in 0.043759 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表