Qt 5.9 插槽命名错误

Qt 5.9 slot naming bug

我正在使用 Qt 5.9。

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

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

使用名称 on_stop_treatment 声明插槽将与名为 Signal/Slot Automatic Connections

的 Qt 功能冲突

Qt 将为您的插槽检测此特定语法,并将尝试将 stop 与名为 stop 的 QObject 和 treatment 与在 class QObject.

为此,Qt 在内部使用 QMetaObject::connectSlotsByName(this); 来执行自动 signal/slot 连接。