qt支持中文、国际化

来源:互联网 发布:红外网络摄像机怎么用 编辑:程序博客网 时间:2024/04/30 00:43
 

关于qt支持中文、国际化 qt对国际化有很好的支持。但默认的是unicode编码。中文系统下默认的并非unicode,而是比如gbk或gb2312。所以在进行const char*参数传递和显示时必须特别注意。比如在默认情况下 QMessageBox::information(this, "Test", "这是一个测试"); 中文字符无法正确显式又如 bool connect(const char * connectString); 你如果输入 QString str("一个测试"); connect((const char*)str); 默认是调用QString.latin1()方法,是直接从Unicode的QString返回latin-1字符表示集。在中文系统下有时不是你想要的。解决方案:在main.cpp里增加 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); 这时涉及到QString/QCString到const char*的转换将使用本地的编码集。类似的还有setCodecForTr()方法。

NOTE: 这跟qt使用unicode进行内部通讯、显示并不冲突。当显示一个const char*时, qt会将const char*再行转成unicode。

 

另一种麻烦点的方法:

在写QT程序的时候,怎样使用中文?QT内建了国际化支持,可以使用国际化支持来实现。但,比较复烦琐,那怎么简单地使用中文呢? QT 的QString内部是使用Unicode编码的,在写源码的时候,可以使用本地的GB2312/GBK/GB18030,或者UTF8编码。如果是使用前者的话,那可以使用QString::fromLocal8Bit("本地中文字符串")来得到想要的结果。如果是使用后者的话,可以使用 QString::fromUtf8("UTF8编码格式的中文字符串")来得到想要的结果。