您的位置:首页 > 编程语言 > Qt开发

QT中文处理--Qt5对付中文真好用

2016-08-05 19:48 429 查看
Qt好多C++程序员都在用,Qt4大家可能用的多,到了Qt5不熟悉的人到是很多,其中我喜欢的特性也是和Qt4大不一样的地方就是对中文的处理。

Qt4中使用“QTextCodec::setCodecForTr(QTextCodec::codecForName('gb18030'));”类似的语句来解决问题,但是这种全局性的设置在一些情况是下是会影响其他语言的。例如软件中存在多种语言。

Qt5中是怎么解决中文的呢?我的理解就是QString一个类直接全部搞定。

例如想保存中文到文件中,再将文件中的中文内容读取到程序中。

一下是代码片段:

view
sourceprint?

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
 
}


view
sourceprint?

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
 
}


view
sourceprint?

1.
QString::fromUtf8


2.
 

3.
QString::toUtf8


4.
 

5.
或者


view
sourceprint?

1.
QString::fromLocal8Bit


view
sourceprint?

1.
QString::toLocal8Bit


2.
 

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


4.
 

5.
大家可以试试。


FROM: http://www.it165.net/pro/html/201408/18861.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: