C++ Qt 5.9插槽命名错误
我正在使用Qt5.9 使用下划线样式声明插槽时,我遇到一个问题,尤其是当我使用超过2个下划线命名插槽时。例如,使用C++ Qt 5.9插槽命名错误,c++,qt,qt-slot,C++,Qt,Qt Slot,我正在使用Qt5.9 使用下划线样式声明插槽时,我遇到一个问题,尤其是当我使用超过2个下划线命名插槽时。例如,使用void on_stop_treatment()slot时,即使我没有建立连接,我也会得到QMetaObject::connectSlotsByName:on_stop_treatment()没有匹配信号 无论如何,建立连接,即使我收到相同的消息,插槽信号机制也能工作。删除第二个下划线时,我不会收到任何错误消息,并且该机制可以工作。(我还尝试删除moc文件并重建)在停止治疗时用名称声
void on_stop_treatment()
slot时,即使我没有建立连接,我也会得到QMetaObject::connectSlotsByName:on_stop_treatment()没有匹配信号
无论如何,建立连接,即使我收到相同的消息,插槽信号机制也能工作。删除第二个下划线时,我不会收到任何错误消息,并且该机制可以工作。(我还尝试删除moc文件并重建)在停止治疗时用名称声明插槽将与名为
Qt将为您的插槽检测此特定语法,并尝试将stop
与名为stop
的QoObject和treatment
与QoObject类中声明的该名称信号相匹配
为了实现这一点,Qt在内部使用QMetaObject::connectSlotsByName(this)
执行自动信号/插槽连接。在停止治疗时用名称声明插槽将与调用的Qt功能冲突
Qt将为您的插槽检测此特定语法,并尝试将stop
与名为stop
的QoObject和treatment
与QoObject类中声明的该名称信号相匹配
为了实现这一点,Qt在内部使用QMetaObject::connectSlotsByName(this)
执行自动信号/插槽连接。这可能是一个错误,moc要连接Qt Designer创建的一些插槽,请使用此方法,此方法将尝试连接上格式为的任何插槽,在你的例子中,你的槽有这种格式,所以它在你的类中查找,但从你的回答中我了解到,我应该得到QMetaObject::connectSlotsByName:stop()没有匹配信号,而不是QMetaObject::connectSlotsByName:on_stop_treatment()没有匹配信号,它将尝试在假设的停止
对象上查找假设的治疗
信号这可能是一个错误的重复,moc将使用该方法连接Qt Designer创建的一些插槽,该方法将尝试连接任何具有
格式的插槽,在你的例子中,你的槽有这种格式,所以它在你的类中查找,但从你的回答中我了解到,我应该得到QMetaObject::connectSlotsByName:stop()没有匹配信号,而不是QMetaObject::connectSlotsByName:on_stop_treatment()没有匹配信号,它将尝试在假设的停止
对象上查找假设的治疗
信号此问题重复,无需回答。可能重复Nope,请询问他在这样命名插槽时为什么会出现此错误。jhy提出的另一个问题是,为什么他的信号/插槽自动连接不能正常工作。这里没有复制品,但我喜欢你的化身。送奶工丹在工作中(或Karen)真的没有得到足够的赏识。这个问题是重复的,没有必要回答。可能是重复的Nope,OP问他为什么在这样命名他的插槽时出现这个错误。jhy提出的另一个问题是,为什么他的信号/插槽自动连接不能正常工作。这里没有复制品,但我喜欢你的化身。送牛奶的丹在他的工作中(或卡伦)真的没有得到足够的赏识。