我设置了一个QT菜单,它与动作函数on_actionOpen_triggered()自动连接。稍后,我希望向该函数传递一个文件名字符串,以便在特定条件下手动调用该函数。因此,我将函数签名更改为on_actionOpen_triggered( const char *filename_in )。在这个改变之后,程序运行良好,但是终端中有一个投诉,
QMetaObject::connectSlotsByName: on_actionOpen_triggered没有匹配信号(const*)
我想知道发生了什么,以及如何为这个菜单操作函数添加参数。
谢谢。
发布于 2018-04-18 06:25:38
我面对着同样的QMetaObject::connectSlotsByName:Warning/Error没有匹配的信号
得到了简单的解决方案。例如:
问题:
QMetaObject::connectSlotsByName: No matching signal for on_actionOpen_triggered(const char*)警告您只需更改Slot的名称
溶液
更改插槽名(如on_actionOpenTriggered ),此警告将消失。
提示
Qt试图理解它的默认插槽(如on_<name_of_object>_<action> ),因此如果您指定具有上述签名的任何插槽,Qt将抛出警告。
希望它能对某人有所帮助。
发布于 2014-06-22 20:09:04
Qt自动连接机制无法找到合适的信号到您的插槽。对于菜单项,没有任何信号可以与一个参数匹配,信号不能使的参数比插槽少。
您可以更改插槽的名称,这样它就不会试图找到匹配的信号,直接使用QObject::connect而不是QMetaObject::connectSlotsByName。此外,如果希望filename_in处理connect信号,则必须为参数triggered分配默认值。
发布于 2022-03-06 19:26:00
我的问题是PySide6,而不是PyQt5。通过使用PySide6,我删除了-decorators槽(),从而摆脱了消息。
https://stackoverflow.com/questions/24355023
复制相似问题