Qt记录: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后报错。有以下解决方法

1.直接换成MinGw编译

将MSVC

改成MinGW

                                ​​​​​​​        ​​​​​​​   

 

 2.在工程文件pro添加以下代码,如图:

代码如下:

msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}


版权声明:本文为qq_43521843原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。