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 连接。
我正在使用 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 将为您的插槽检测此特定语法,并将尝试将 stop
与名为 stop
的 QObject 和 treatment
与在 class QObject.
为此,Qt 在内部使用 QMetaObject::connectSlotsByName(this);
来执行自动 signal/slot 连接。