关于qt开发中代码出错(如拼写错误),但顺利构建成功

结论:

        旧版信号槽机制(SIGNALSLOT 宏)在运行时才解析信号和槽的名称,不会在编译或链接阶段进行类型检查。当你使用 SIGNAL(clicked())SLOT(do_FontColor()) 的旧语法时,这些内容会被预处理为字符串(例如 "clicked()""do_FontColor()")。这些字符串仅仅在程序运行时才会被 Qt 的元对象系统(Meta-Object System, MOC)进行解析并尝试匹配。

问题详情:

恰好碰到编辑工具代码补全失效,就手动敲函数名,成功构建后无法实现预期功能(点击按钮文本变色),开始着手检查,发现在调试模式下运行,qt creator下方已经输出了相关的提示信息:

可以看到刚好有两个提示,分别对应拼写错误的两处。

改进:使用新语法

新旧语法对比:

旧语法:
connect(ui->radioButton_blue, SIGNAL(clicked()), this, SLOT(do_FontColor()));
  • 信号和槽通过字符串解析,编译器无法检查有效性。
  • 拼写错误只能在运行时发现。
新语法:
connect(ui->radioButton_blue, &QRadioButton::clicked, this, &Dialog::do_FontColor);
  • 信号和槽通过函数指针绑定,编译阶段即可验证有效性。
  • 拼写错误会在编译期直接报错。

【注】do_FontColor()为自定义函数


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值