QT中QString与string的转化,解决中文乱码问题

[cpp]  view plain  copy
  1. 在QT中,使用QString输出到控件进行显示时,经常会出现中文乱码,网上查了一圈,发现大部分都是针对QT4增加4条语句:</span>  

[cpp]  view plain  copy
  1. QTextCodec *codec = QTextCodec::codecForName("UTF-8");  
  2.   
  3. QTextCodec::setCodecForTr(codec);  
  4.   
  5. QTextCodec::setCodecForLocale(codec);  
  6. QTextCodec::setCodecForCStrings(codec);  


我使用的是QT5,已经不支持如此设置了,而且这样设置也会存在很多问题。 其实,还有更简单的方法,就是使用我写的如下两个函数:

[cpp]  view plain  copy
  1. QString str2qstr(const string str)  
  2. {  
  3.     return QString::fromLocal8Bit(str.data());  
  4. }  
  5.   
  6. string qstr2str(const QString qstr)  
  7. {  
  8.     QByteArray cdata = qstr.toLocal8Bit();  
  9.     return string(cdata);  
  10. }  

在需要使用中文QString时,先用string写一个,然后转过去就可以啦,例如:

[cpp]  view plain  copy
  1. qlabel->setText(QString(str2qstr(string("支持中文"))));  

猜你喜欢

转载自blog.csdn.net/zb872676223/article/details/80435181
今日推荐