Qt好多C++程序员都在用,Qt4大家可能用的多,到了Qt5不熟悉的人到是很多,其中我喜欢的特性也是和Qt4大不一样的地方就是对中文的处理。
Qt4中使用“QTextCodec::setCodecForTr(QTextCodec::codecForName('gb18030'));”类似的语句来解决问题,但是这种全局性的设置在一些情况是下是会影响其他语言的。例如软件中存在多种语言。
Qt5中是怎么解决中文的呢?我的理解就是QString一个类直接全部搞定。
例如想保存中文到文件中,再将文件中的中文内容读取到程序中。
一下是代码片段:
01.
1 bool MainWindow::__ReadFile(const QString &filename)
02.
2 {
03.
3 QFile infile(filename);
04.
4 if (infile.open(QIODevice::ReadOnly))
05.
5 {
06.
6 //textEdit->setPlainText(QString::fromLocal8Bit(infile.readAll()));
07.
7 textEdit->setPlainText(QString::fromUtf8(infile.readAll()));
08.
8 infile.close();
09.
9
10.
10 setWindowModified(false);
11.
11 setWindowTitle(filename);
12.
12 return true;
13.
13 }
14.
14 return false;
15.
15 }
01.
1 bool MainWindow::__WriteFile(const QString &filename)
02.
2 {
03.
3 QFile outfile(filename);
04.
4 if (outfile.open(QIODevice::WriteOnly))
05.
5 {
06.
6 //outfile.write(textEdit->toPlainText().toLocal8Bit().data());
07.
7 outfile.write(textEdit->toPlainText().toUtf8().data());
08.
8 outfile.close();
09.
9
10.
10 setWindowModified(false);
11.
11 setWindowTitle(filename);
12.
12 return true;
13.
13 }
14.
14 return false;
15.
15 }
1.
QString::fromUtf8
2.
3.
QString::toUtf8
4.
5.
或者
1.
QString::fromLocal8Bit
1.
QString::toLocal8Bit
2.
3.
使用“一对”就可以完美解决中文输入输出问题。
4.
5.
大家可以试试。
FROM: http://www.it165.net/pro/html/201408/18861.html
本文介绍了Qt5中处理中文的方法,通过使用QString类解决了文件中中文的读写问题。对比Qt4的全局设置,Qt5提供了更为灵活且不影响其他语言的解决方案。

被折叠的 条评论
为什么被折叠?



