qt creator 常量中有換行符(轉)
這篇文章寫於QT5.6的誕生,它是QT5的第一個長期支援版。這也是QT5已成熟的里程碑。
我搭建的環境是:Win10+VS2015+QT5.6+QtCreator
在安裝VS2015的時候,若是用QtCreator開發,那麼只需選擇“適用於VC2015的公共工具”僅此一項,安裝耗時則僅需20分鐘左右。
Win+VS+QT5+QtCreator,在原始檔裡有中文的時候,例如SetWindowTitle("哈哈哈");會提示錯誤:常量中有換行符。解決方式兩步走:
第一步:QtCreator→工具→選項→文字編輯器→行為→檔案編碼→UTF-8BOM→選擇“如果編碼是UTF8則新增”
第二步:在原始碼裡含中文的前面,加上“u8”,例如SetWindowTitle(u8"哈哈哈");
“u8”是c++11的內容,支援C++11的主流編譯器都會支援它。
在qt4中正常的 char* p="哈哈哈"; 在qt5中需要改成 const char* p = u8"哈哈哈";
在Qt5裡,QString的編碼是unicode,原始檔編碼被強制為utf8,而簡體中文的Win系統的本地編碼是GBK。
換句話說,Qt5程式在簡體中文的Win系統裡,會有QString←GBK與GBK←QString的需求:
QString←GBK:QString str = QString::fromLocal8Bit(內容);
GBK←QString:QByteArray str = QString.toLocal8Bit();
Local8Bit 就是系統本地編碼的意思,Qt 會自動識別它,對於linux就是utf8,簡體中文Win就是GBK,繁體中文Win就是BIG5。
對於寫傳統的GUI程式,Qt4只需要包含<QtGui>即可,在Qt5中則改成<QtWidgets>,就不會出現需要包含很多標頭檔案的情況了。別忘了QT += widgets。
=========另==========
最近使用qt5 編寫應用時中文出現常量中有換行符錯誤,試了QString::fromutf8、QString::fromlocal8bit都一樣。但奇怪的是將中文“極差圖”改為“均值圖”就好了,可我均值極差圖都要,檔案是utf8格式的,哪位高手幫幫忙,先謝謝啦!
QTcreator 本身沒問題。是你不會設定。。。 QTcreator ->工具-> 選項 ->行為-> 預設編碼 設為 UTF-8,UTF-8 BOM 設為 如果編碼是 UTF-8 則新增。 這樣設定完後, cpp 檔案自動就存為帶 BOM 的 utf-8 了。 要說有問題也是微軟的 vc++ 編譯器有問題,無法識別不帶 BOM 的 utf-8。。。