QMetaObject::invokeMethod: No such method 解决方法

本文详细介绍了在使用QMetaObject::invokeMethod调用对象方法时遇到的Nosuchmethod错误的原因及解决办法。问题主要涉及Q_INVOKABLE声明的缺失、参数类型匹配不一致。确保被调用方法增加Q_INVOKABLE声明,并正确注册和匹配参数类型,以避免此类错误。对于非信号和槽的函数,需使用qRegisterMetaType注册数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用如下方法调用某对象的方法时,容易出现No such method
QMetaObject::invokeMethod(m_obj,ch,Q_ARG(QVariant, m_value));
在这里插入图片描述
产生的原因有两个:
1、被调用的方法应增加Q_INVOKABLE声明。注意,要调用的类型必须是信号、槽,以及Qt元对象系统能识别的类型, 如果不是信号和槽,可以使用qRegisterMetaType()来注册数据类型。此外,使用Q_INVOKABLE来声明函数,也可以正确调用。
2、被调用的方法的参数类型必须严格一致。

更进一步了解QMetaObject::invokeMethod,请参考https://blog.youkuaiyun.com/luoyayun361/article/details/97915133

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值