[转载]Qt C2001报错:“常量中有换行符”且部分中文显示黑框
版权声明
版权声明:本文为CSDN博主「星辰丶大海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43521843/article/details/116864525
原文标题:Qt编程遇C2001错误,提示“常量中有换行符”
注意事项:本文在转载时对文章标题、内容排版有微小改动!
解决方案
旧方案
在新电脑做一个简单的Qt项目时,在debug输出的时候,出现了C2001错误,提示“常量中有换行符”,
比如
ui->pBtnStart->setText(tr("开始监测"));
就会出现常量中有换行符,肉眼确实没看出来......
但是
ui->pBtnStart->setText(tr("停止监测"));
却可以顺利通过编译,试了很久改了编码也不行,即便编译通过界面显示却会乱码。
最后通过网上百度,找到了3种解决方式:
- 1、将字符中的中文字符用英文字母或单词代替,这样解决的好处是代码规范,语言统一,缺点就是没有中文表达那样直接、清晰。(如果是这样我就不会去用中文了!!!)
- 2、使用中文字符常量时,用QStringLiteral修饰中文字符,格式如QStringLiteral("中文字符"),这种方法必须在每次使用中文字符时都需要进行修饰,否则还是会出现错误,所以比较麻烦。
- 3、直接在头文件声明处添加
#pragma execution_character_set("utf-8")
,直接解决此错误。
我采用了第3种方法,其步骤如下:
- 1、QT界面菜单栏->工具->选项->文本编辑器,修改成如果编码是UTF-8则添加,如图:
- 2、QT界面菜单栏->编辑->Slect Encoding...->UTF-8->按编码保存
- 3、在需要的头文件中加入
#pragma execution_character_set("utf-8")
即可
#pragma execution_character_set("utf-8")
2022更新
出现这种情况的可能是在使用Qt的时候采用了msvc编译,源代码文件是无BOM的utf-8编码格式,QtCreator用MinGw编译OK,切换成MSVC后报错。有以下解决方法
方案一:直接换成MinGw编译
将MSVC
改成MinGW
#### 方案二:在工程文件pro添加以下代码
在工程文件pro添加以下代码,如图:
代码如下:
msvc {
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}