Qt Creator 中文编译失败 怎么办
2023-09-11 14:19:24 时间
在Qt Creator 中c++源码有中文字符,结果不能编译成功。
代码
QMessageBox::warning(this, "警告","用户名密码错误",QMessageBox::Yes);
报错如下:
-1: warning: C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
error: C2001: newline in constant
解决方法:
首先源码的保存格式是UTF-8。Qt creator 的菜单里 编辑-Select Encoding,可以选择编码。以及工具-选项->文本编辑器->行为->文件编码里要选择UTF-8,BOM: 如果是UTF-8则自动添加。
-
给中文字符串加QStringLiteral宏或QString::fromLocal8Bit函数:
QStringLiteral("你好中文!");
不过,在这两种形式下,你都无法用tr方法来创建翻译了。 -
另一种方法是宏定义:
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
这个宏告诉MSVC,执行字符集是UTF-8编码的,别瞎整成GB2312的!还有个好处,就是能用tr包中文,方便日后的翻译。
ps
之前的报错,我还发现,如果是偶数个中文就不会报错,奇数个就会编译报错。
同样适用Qt中文乱码的问题。
其实主要原因是用MSVC编译造成的。
相关文章
- qt创建多层目录_Qt多工程多目录的编译案例
- QT开发:QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection'...
- Qt 控制台输入输出(支持中文)
- Qt Q_OBJECT qss
- QT实现右键快捷菜单
- qt中判断字符相等这样才可以否则一直为false,buffer[0]==(char)(0xaa)
- Qt 事件处理机制-qt源码解读
- 【QT】Qt::UserRole的作用
- 【QT】Qt 给已经开发好的程序快速封装成动态库
- 【QT】Qt获取前几天/后几天的时间
- 【QT】Qt使用QJson生成json文件并保存
- 【QT】Qt 5 的程序:打印文档
- Qt编写可视化大屏电子看板系统25-模块3设备监控
- Qt编写可视化大屏电子看板系统21-数据转曲线
- Qt编写的项目作品8-视频综合应用示例
- Qt编写自定义控件63-水波效果
- Qt编写数据可视化大屏界面电子看板7-窗体浮动
- Qt之QFutureWatcher
- Qt之图形(简笔画-绘制漂亮的西瓜)
- 报错 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found