QT中用中文

这里涉及到一个类QTextCodec,可以查看帮助文档,来明白它的功能,以及怎么使用它。

(1)QTextCodec provides conversions between text encoding,用于文本编码之间的转换

       QT使用Unicode来存储和操作字符串。但是在许多情况下我们希望用不同的编码方法来处理数据。

比如日本人用 Shift-JIS or ISO 2022-JP来存储文档,而俄罗斯人用KOI8-R or Windows-1251来存储文档。QT提供一系列的QTextCodec类来帮助处理non-Unicode格式到Unicode来转换。还可以创建自己的codec类。QT支持的encoding如下:(查看帮助文档)

(2)关于和它有关的使用

        可以用QTextStream和它的setCodec()函数来读写文件。

如 QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

1、想在源代码中直接使用中文,而不使用tr()函数进行转换,怎么办?
答:在main函数中加入下面三条语句,但并不提倡


QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


或者

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

 

使用GBK还是使用UTF-8,依源文件中汉字使用的内码而定
这样,就可在源文件中直接使用中文,比如:

QMessageBox::information(NULL, "信息", "关于本软件的演示信息", QMessageBox::Ok, QMessageBox::NoButtons);

 

 2、Qt 中的中文:
如果使程序只支持一种编码,也可以直接把整个应用程序的编码设置为GBK编码, 然后在字符串之前加tr(QObject::tr),
#include    <qtextcodec.h>

qApp->setDefaultCodec( QTextCodec::codecForName("GBK") );
QLabel *label = new QLabel( tr("中文标签") );

19. Qt显示中文最简单办法

QString str;
str = QString::fromLocal8Bit(".....");
QLabel tLabel(str, 0);

你可能感兴趣的:(null,存储,文档,qt,encoding,Codec)