zoukankan      html  css  js  c++  java
  • 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

    使用“一对”就可以完美解决中文输入输出问题。

    大家可以试试。

    实验源码:点击这里
     


  • 相关阅读:
    (转)130道ASP.NET面试题
    (转)c#对象内存模型
    (转)探讨:ASP.NET技术的学习顺序问题
    (转)ASP.NET缓存概念及其应用浅析
    Response.Redirect在新窗口打开网页
    转载 C# 序列化与反序列化意义详解
    简单进制转化
    简单成绩管理系统(没有存盘)
    kali不能ifconfig等简单命令
    蓝桥杯练习之开花(二分法查找)
  • 原文地址:https://www.cnblogs.com/superstargg/p/3890703.html
Copyright © 2011-2022 走看看