我正在使用 Qt 5.9。
我在用下划线样式声明插槽时遇到问题,特别是当我用超过 2 个下划线命名它时。例如使用 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
与信号相匹配在 QObject 的类中声明的那个名称。
为了实现这一点,Qt 在内部使用 QMetaObject::connectSlotsByName(this);
来执行自动信号/槽连接。
关于c++ - Qt 5.9 插槽命名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644024/