我用的是Qt 5.9。
我在声明带有下划线样式的插槽时遇到了问题,特别是当我用两个以上的underscores.For示例命名它时,它有一个void on_stop_treatment()插槽,即使我没有连接,我也得到了QMetaObject::connectSlotsByName: No matching signal for on_stop_treatment()。
无论如何,建立一个连接,即使我得到相同的消息,插槽信号机制工作。删除第二个下划线,我没有收到错误消息,该机制可以工作。(我还尝试删除moc文件并重新构建)
发布于 2017-10-09 10:24:57
声明名为on_stop_treatment的槽将与名为信号/插槽自动连接的Qt特性发生冲突。
Qt将为您的插槽检测到这个特定的语法,并将尝试将stop与名为stop的QObject和在QObject类中声明的名称为treatment的信号匹配。
为了实现这一点,Qt使用内部QMetaObject::connectSlotsByName(this);执行自动信号/时隙连接。
https://stackoverflow.com/questions/46644024
复制相似问题