QT 中文语法错误: 缺少“(” (在“}”的前面)(所遇到的特殊情况)

本文探讨了在读取INI文件过程中遇到的中文字符编译错误问题,并分享了一个非传统解决方案——手动重新输入中文字符来避免UTF-8格式引起的编码问题。

在读ini 文件中遇到的问题,写入文件在代码中用了中文,遇到了中文语法报错,这里常规的方法就是网上找得到的:

1.加上一句:#pragma execution_character_set("utf-8")

2. 在对QString类型变量赋值时,可使用 QString::fromLocal8Bit("中文")格式。

 或QString::fromUtf8("中文")格式。

3.在工具->选项->文本编辑器里面的->Behavior->文件编码

可惜我用过常规手段表示并不行,甚至没有任何影响,然后我开始寻找度娘中的其他不常规手段,发现了有些中文后的“!”、“()”、“{}”都需要改成英文的符号才能生效,虽然我用的中文中没有这些,但是让我想到了一个可能性:

我在用中文的时候,是把UTF-8格式文件中的中文拷贝进去的,而这之中非常有可能影响了编译码,于是我把中文的部分重新手打了一遍,编译就过了,这真是莫名其妙了,至于为什么可能需要深入研究一下了,不过这个方法如果能帮到大家的话,我愿意分享出来给大家试试哈哈哈!

 

void BarVUMeter::drawBorder(QPainter *painter) { painter(this); painter->save(); QColor light = Qt::white; QColor dark = colorBg.darker(140); painter->setPen(QPen(colorBg, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); QLinearGradient linGrad(5, 250, 10, 250); linGrad.setColorAt(0, light); linGrad.setColorAt(1, colorBg); linGrad.setSpread(QGradient::PadSpread); painter->setBrush(linGrad); QRectF border(5, 5, 90, 530); painter->drawRoundedRect(border, 5, 5); QLinearGradient linGrad1(85, 250, 95, 250); linGrad1.setColorAt(0, colorBg); linGrad1.setColorAt(1, dark); linGrad1.setSpread(QGradient::PadSpread); painter->setBrush(linGrad1); QRectF border1(20, 5, 75, 530); painter->drawRoundedRect(border1, 5, 5); //绘制左右文字 painter->setPen(QPen(colorValue, 2)); QRectF Left(20, 505, 25, 20); QRectF Right(55, 505, 25, 20); painter->drawText(Left,QString::fromUtf8("左"), Qt::AlignCenter); painter->drawText(Right, u8"右", Qt::AlignCenter); painter->restore(); } ..\BarVumeter\barvumeter.cpp(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 F:\QtCode\BarVumeter\barvumeter.h(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 ..\BarVumeter\barvumeter.cpp(48): error C2064: 项不会计算为接受 1 个参数的函数 ..\BarVumeter\barvumeter.cpp(75): error C2001: 常量中有换行符 ..\BarVumeter\barvumeter.cpp(76): error C2146: 语法错误: 缺少)(在标识符“painter”的前面) ..\BarVumeter\barvumeter.cpp(76): error C2146: 语法错误: 缺少“;”(在标识符“painter”的前面) ..\BarVumeter\barvumeter.cpp(76): error C2001: 常量中有换行符 ..\BarVumeter\barvumeter.cpp(78): error C2146: 语法错误: 缺少)(在标识符“painter”的前面) ..\BarVumeter\barvumeter.cpp(78): error C2146: 语法错误: 缺少“;”(在标识符“painter”的前面)
06-07
生成开始于 17:28... 1>------ 已启动生成: 项目: TPPreview, 配置: Debug x64 ------ 2>------ 已启动生成: 项目: P2pSub, 配置: Debug x64 ------ 3>------ 已启动生成: 项目: SurveillanceSystem, 配置: Debug x64 ------ 2>AsynLocalServer.cpp 2>AsynLocalSocket.cpp 2>ProcessManager.cpp 2>TPLocalServer.cpp 2>main.cpp 2>moc_AsynLocalServer.cpp 2>moc_TPLocalServer.cpp 2>moc_ProcessManager.cpp 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalServer.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalSocket.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“GeneratedFiles/Debug/moc_TPLocalServer.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“GeneratedFiles/Debug/moc_AsynLocalServer.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“../../../../vms-libs/native/TPProcess/TPLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2143: 语法错误: 缺少“;”(在“{”的前面) 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalSocket.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalSocket.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2143: 语法错误: 缺少“;”(在“{”的前面) 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 2>(编译源文件“../../../../vms-libs/native/TPProcess/AsynLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2143: 语法错误: 缺少“;”(在“{”的前面) 2>(编译源文件“GeneratedFiles/Debug/moc_TPLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 2>(编译源文件“GeneratedFiles/Debug/moc_TPLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2143: 语法错误: 缺少“;”(在“{”的前面) 2>(编译源文件“GeneratedFiles/Debug/moc_AsynLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 2>(编译源文件“GeneratedFiles/Debug/moc_AsynLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2143: 语法错误: 缺少“;”(在“{”的前面) 2>(编译源文件“../../../../vms-libs/native/TPProcess/TPLocalServer.cpp”) 2>E:\software\VS2022\VS2022Community\VC\Tools\MSVC\14.44.35207\include\sal.h(2361,12): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 2>(编译源文件“../../../../vms-libs/native/TPProcess/TPLocalServer.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数” 2>(编译源文件“../../../../vms-libs/native/TPProcess/ProcessManager.cpp”) 2>F:\updateVPC\vpc1\vms\vms-libs\native\P2P\code\libs\upnp\miniupnpc\version(1,1): error C2059: 语法错误:“常数”
最新发布
11-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值