(五)Qt5之中文顯示


    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("中文顯示!"));

image

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

QString::fromLocal8Bit("提示")

不過在Qt5中,提供了一個專門的處理宏,來支持中文常量,那就是QStringLiteral,但它只能處理常量。

QMessageBox::information(this, QString::fromLocal8Bit("提示"), QStringLiteral("中文顯示"));

image

    const char* info = "中文顯示";
    //不支持
    QString strInfo = QStringLiteral(info);
    //支持
    QString strInfo = QString::fromLocal8Bit(info);

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


免責聲明!

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



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