在QT中,使用QString輸出到控件進行顯示時,經常會出現中文亂碼,網上查了一圈,發現大部分都是針對QT4增加4條語句:</span>
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
我使用的是QT5,已經不支持如此設置了,而且這樣設置也會存在很多問題。 其實,還有更簡單的方法,就是使用我寫的如下兩個函數:
QString str2qstr(const string str)
{
return QString::fromLocal8Bit(str.data());
}
string qstr2str(const QString qstr)
{
QByteArray cdata = qstr.toLocal8Bit();
return string(cdata);
}
在需要使用中文QString時,先用string寫一個,然後轉過去就可以啦,例如:
qlabel->setText(QString(str2qstr(string("支持中文"))));