QT中QString與string的轉化,解決中文亂碼問題


 

 

在QT中,使用QString輸出到控件進行顯示時,經常會出現中文亂碼,網上查了一圈,發現大部分都是針對QT4增加4條語句:</span>  
[cpp] view plain copy
QTextCodec *codec = QTextCodec::codecForName("UTF-8");  
  
QTextCodec::setCodecForTr(codec);  
  
QTextCodec::setCodecForLocale(codec);  
QTextCodec::setCodecForCStrings(codec);  


我使用的是QT5,已經不支持如此設置了,而且這樣設置也會存在很多問題。 其實,還有更簡單的方法,就是使用我寫的如下兩個函數:

[cpp] view plain copy
QString str2qstr(const string str)  
{  
    return QString::fromLocal8Bit(str.data());  
}  
  
string qstr2str(const QString qstr)  
{  
    QByteArray cdata = qstr.toLocal8Bit();  
    return string(cdata);  
}  

在需要使用中文QString時,先用string寫一個,然后轉過去就可以啦,例如:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM