首页 > 代码库 > Qt5对付中文真好用
Qt5对付中文真好用
Qt好多C++程序员都在用,Qt4大家可能用的多,到了Qt5不熟悉的人到是很多,其中我喜欢的特性也是和Qt4大不一样的地方就是对中文的处理。
Qt4中使用“QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));”类似的语句来解决问题,但是这种全局性的设置在一些情况是下是会影响其他语言的。例如软件中存在多种语言。
Qt5中是怎么解决中文的呢?我的理解就是QString一个类直接全部搞定。
例如想保存中文到文件中,再将文件中的中文内容读取到程序中。
一下是代码片段:
1 bool MainWindow::__ReadFile(const QString &filename) 2 { 3 QFile infile(filename); 4 if (infile.open(QIODevice::ReadOnly)) 5 { 6 //textEdit->setPlainText(QString::fromLocal8Bit(infile.readAll())); 7 textEdit->setPlainText(QString::fromUtf8(infile.readAll())); 8 infile.close(); 9 10 setWindowModified(false);11 setWindowTitle(filename);12 return true;13 }14 return false;15 }
1 bool MainWindow::__WriteFile(const QString &filename) 2 { 3 QFile outfile(filename); 4 if (outfile.open(QIODevice::WriteOnly)) 5 { 6 //outfile.write(textEdit->toPlainText().toLocal8Bit().data()); 7 outfile.write(textEdit->toPlainText().toUtf8().data()); 8 outfile.close(); 9 10 setWindowModified(false);11 setWindowTitle(filename);12 return true;13 }14 return false;15 }
QString::fromUtf8
QString::toUtf8
或者
QString::fromLocal8Bit
QString::toLocal8Bit
使用“一对”就可以完美解决中文输入输出问题。
大家可以试试。
实验源码:点击这里
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。