歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt5中文顯示出現亂碼解決

Qt5中文顯示出現亂碼解決

日期:2017/3/1 9:30:04   编辑:Linux編程

Qt中的中文顯示,經常會出現亂碼,但在UI設計界面上添加的中文是不會出現亂碼的,如果你剛使用qt,那麼你肯定會碰到這個問題。

網上搜索一下,找到的都是這種:
#include < QTextCodec >


int main(int argc, char **argv)

{

....................

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

..........................

}


Qt5中,一些函數已經被取消了,而且網上很多都是不推薦這種寫法。所以當時找到的是自行轉換:
QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );

QMessageBox::information(this, "提示", BianMa->toUnicode("中文顯示!"));

其實也可以通過QString定義的靜態函數,先轉換成Unicode類型:

QString::fromLocal8Bit("提示")

不過在Qt5中,提供了一個專門的處理宏,來支持中文常量,那就是QStringLiteral,但它只能處理常量。
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QStringLiteral("中文顯示"));

const char* info = "中文顯示";

//不支持

QString strInfo = QStringLiteral(info);

//支持

QString strInfo = QString::fromLocal8Bit(info);

對於中文常量,使用QStringLiteral即可解決,對於字符串變量,使用QString自帶函數也可以輕松解決。

Ubuntu 環境下Gtk與QT編譯環境安裝與配置 http://www.linuxidc.com/Linux/2013-08/88539.htm

Linux系統下QT環境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm

Ubuntu下QT控制台程序無法運行的解決方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm

Ubuntu 10.04下QT4.7.4移植詳解 http://www.linuxidc.com/Linux/2013-01/77930.htm

Ubuntu 14.04下安裝部署Qt5開發環境 http://www.linuxidc.com/Linux/2014-05/101774.htm

Qt 的詳細介紹:請點這裡
Qt 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved