• 12142阅读
  • 20回复

[提问]【原创】在QT中怎样使用中文 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-07-30
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
在写QT程序的时候,怎样使用中文?QT内建了国际化支持,可以使用国际化支持来实现。但,比较复烦琐,那怎么简单地使用中文呢?
QT 的QString内部是使用Unicode编码的,在写源码的时候,可以使用本地的GB2312/GBK/GB18030,或者UTF8编码。如果是使用前者的话,那可以使用QString::fromLocal8Bit("本地中文字符串")来得到想要的结果。如果是使用后者的话,可以使用 QString::fromUtf8("UTF8编码格式的中文字符串")来得到想要的结果。
[ 此贴被XChinux在2005-08-02 09:05重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线sotux

只看该作者 1楼 发表于: 2005-08-21
能否说得再具体些?
还有就是 mp3 的 tag,v1.1 和 v2.4 的应该如何处理中文编码呢?
离线XChinux

只看该作者 2楼 发表于: 2005-08-21
??这个。。俺是们外汉了
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线daniel_whj
只看该作者 3楼 发表于: 2005-08-23
mp3 tag, use local language (codec),
1, You can read tag from MP3 file, then call QString::fromLocal8Bit() to convert to QString(unicode). normally.
2, use QTextCodec convert local string to Unicode.
离线giscn
只看该作者 4楼 发表于: 2005-08-23
不需要楼主讲的这么复杂,每个字串都要from过来过去的。在入口点添加:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
就全搞定了,还有一些细节,见,
http://spaces.msn.com/members/nzt/Blog/cns!1pmB0kdXbVha3bZHlaGN-REA!163.entry
http://nzt.spaces.live.com
离线XChinux

只看该作者 5楼 发表于: 2005-08-23
好东西,谢谢楼上的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liuhuilan

只看该作者 6楼 发表于: 2005-09-20
这个方法在qt2.3.1下能用吗,成功转换成中文的是在什么版本下阿,我的从来没有成功过
离线XChinux

只看该作者 7楼 发表于: 2005-09-20
qt 2.3.1...估计我永远也碰不上了
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线haulm

只看该作者 8楼 发表于: 2005-10-04
我本来也装3.X的,4.X是发展版本吧,不过看到这个论坛后突然改变想法,清除了编译了一半的QT3下载QT4装上了,感觉不错,就是无从下手,现在只会用来写点CPP文件用G++编译。。。。
离线XChinux

只看该作者 9楼 发表于: 2005-10-05
下面是引用haulm于2005-10-04 00:38发表的:
我本来也装3.X的,4.X是发展版本吧,不过看到这个论坛后突然改变想法,清除了编译了一半的QT3下载QT4装上了,感觉不错,就是无从下手,现在只会用来写点CPP文件用G++编译。。。。


这种方法应该是推荐的吧,IDE只是辅助
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hawayi02

只看该作者 10楼 发表于: 2006-07-26
试试
离线hawayi02

只看该作者 11楼 发表于: 2006-07-26
我加了那句之后,出现以下错误,我是初学者,谁能帮我看看
g++ -c -O2 -fno-strength-reduce -I/usr/lib/qt-3.1/include -I/include -o helloworld.o helloworld.cpp
helloworld.cpp: In function `int main(int, char**)':
helloworld.cpp:9: no method `QTextCodec::codecForLocale'
helloworld.cpp:9: no method `QTextCodec::setCodecForLocale'
make: *** [helloworld.o] Error 1

源代码是:
/* helloworld.cpp */
#include <qapplication.h>
#include <qlabel.h>
#include <qstring.h>

int main(int argc,char **argv)
{
  QApplication app(argc,argv);
  QTextCodec::setCodecForLocale(QTextCodec:: codecForLocale());
  QLabel *label = new QLabel(NULL);
  QString string("Hello, 中国");
  label->setText(string);
  label->setAlignment(
        Qt::AlignVCenter | Qt::AlignHCenter);
  label->setGeometry(0,0,180,75);
  label->show();
  app.setMainWidget(label);
  return(app.exec());
}

要怎么改呢??
离线igoo
只看该作者 12楼 发表于: 2006-07-26
http://www.qtcn.org/bbs/read.php?tid=5536&fpage=2


我现在就用ide vs2003,巨爽

不过开始的时候我也折腾一段时间gw的那个版本,还是vs2003方便啊。help,designer在加上一个visual assistant
写代码如有神助
离线hawayi02

只看该作者 13楼 发表于: 2006-07-26
我用楼主的办法可以解决中文显示问题,也是觉得每次要用中文得时候都要from挺麻烦得,但是按giscn写得那句话就出错了,问题见楼上了,初学者的门槛很难跨啊!!!
离线igoo
只看该作者 14楼 发表于: 2006-07-26
呵呵。楼上的已经解决了阿。把那个帖子看完
离线hawayi02

只看该作者 15楼 发表于: 2006-07-27
我试了网络上的很多例子,大多输都是出现以下类似的错误,是怎么回事啊?好郁闷啊………………
我用的是qt3.1
no method `QTextCodec::codecForLocale'
no method `QTextCodec::setCodecForLocale'
no method `QTextCodec::codecForName'
有劳知情的帮我解答一下啊

还有谢谢igoo那么热情,我用了你帖子上的代码,不过我还是没有解决问题,也会出现类似以上那种错误。
离线hawayi02

只看该作者 16楼 发表于: 2006-07-27
http://www.myqueue.net/linux/tech/showtech.php3?id=631

这边的例子也试了,问题还是存在
郁闷中……………………
离线hawayi02

只看该作者 17楼 发表于: 2006-07-28
问题解决了,头文件没加,谢谢大家了
离线tiancai520
只看该作者 18楼 发表于: 2008-09-09
留脚印
离线cunyoulu
只看该作者 19楼 发表于: 2008-09-10
中文有点麻烦啊,终于,了解为啥中国人写的qt软件都是英文的了。
村友录-让您的村落名扬天下http://www.cunyoulu.com
离线ljp1205
只看该作者 20楼 发表于: 2008-09-17
我在文件操作的时候是这样用的       
QTextStream stream( &file );
QTextCodec* codec = QTextCodec::codecForName("Big5");
stream.setCodec(codec);
快速回复
限100 字节
 
上一个 下一个