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。。。


免責聲明!

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



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