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