QT小白,想在界面控制元件上輸出字串變數(含中文)。呼叫QTool::showMsg("資料庫連接失敗");
顯示亂碼,其中showMsg方法為
void QTool::showMsg(QString text)
{
QString str ;
str = QString("%1").arg(text);
ui->label->setText(str);
}
uj5u.com熱心網友回復:
補充說明,我用的Qt5,也在main函式中添加了QTextCodec::setCodecForLocale(QTextCodec::codecForName('GBK'));但是還是顯示亂碼uj5u.com熱心網友回復:
這是老套的做法了。不需要這樣弄。
顯示亂碼不亂碼主要還是看你檔案編碼
uj5u.com熱心網友回復:
//在頭檔案前面加上下面幾行代碼#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
網上很多做法都是很老套,上面這個應該可行,你試試
uj5u.com熱心網友回復:
msvc的Qt,在中文字串前面加u8,u8"中文字符"mingw的Qt,QStringLiteral("中文字符"),編譯前用記事本把cpp檔案另存為utf-8格式
uj5u.com熱心網友回復:
要使用正確的編碼方式,要看text究竟是什么編碼方式。uj5u.com熱心網友回復:
showMsg ( QString::fromLocal8Bit("我是中文") );試試?
為了可移植性,你還是 把代碼檔案保存成 utf-8 with BOM 吧,
然后在msvc下用 fromLocal8Bit("中文") ,,,,( 沒試過 mingw ) 但是 qDebug() << QStringLiteral("中文哦"); 這樣也行
在 Linux 下 用 fromUtf8("中文")
自己定義一個 my_tr 宏 或者 函式去處理這種情況吧
----------- Qt5.5.1_msvc2010 環境,Qt Creator 3.5.1 驗證 ------
4樓說的 前面加 u8 那個如果編譯器版本低,是不支持的。
你要是 vs2017 打底,肯定可以
uj5u.com熱心網友回復:
直接用寬字符,Qstring::fromWstdString(L("測驗文字"))。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/148435.html
標籤:Qt
上一篇:手機ipad的圖片大小問題
