0

我正在使用 Qt 5.9。

我在用下划线样式声明插槽时遇到问题,特别是当我用超过 2 个下划线命名它时。例如,使用void on_stop_treatment()插槽,即使我没有建立连接,我也会得到QMetaObject::connectSlotsByName: No matching signal for on_stop_treatment().

无论如何,建立连接,即使我收到相同的消息,插槽信号机制也有效。删除第二个下划线我没有收到错误消息并且该机制有效。(我也尝试删除 moc 文件并重建)

4

1 回答 1

3

使用名称声明您的插槽将与称为Signal/Slot Automatic Connectionson_stop_treatment的 Qt 功能发生冲突

Qt 将为您的插槽检测此特定语法,并尝试stop与命名的 QObjectstop以及treatment在 QObject 的类中声明的该名称的信号匹配。

为了实现这一点,Qt 在内部使用QMetaObject::connectSlotsByName(this);来执行自动信号/插槽连接。

于 2017-10-09T10:24:57.510 回答