Qt:no matching function for call to (类名)::connect()的错误原因总结


          最近初学Qt,在做项目的过程中遇到  E:\QT Project\WinCalculater\mainwindow.cpp:132: 错误:no matching function for call to 'MainWindow::connect(MyButton*&, void (MyButton::*)(), MainWindow* const, const char*)' 的问题,然后我就上网查错误的原因,但是查到的答案都没有解决我的问题,后来自己发现了问题所在,故在此与大家分享下。

错误代码:

connect(but0,&MyButton::clicked,this,SLOT(button1()));
错误原因:

       这样不满足connect()五个重载函数的参数要求,也就是参数列表出了问题。

 在 Qt 5 中,QObject::connect()有五个重载:

QMetaObject::Connection connect(const QObject *, const char *,
                                const QObject *, const char *,
                                Qt::ConnectionType);
 
QMetaObject::Connection connect(const QObject *, const QMetaMethod &,
                                const QObject *, const QMetaMethod &,
                                Qt::ConnectionType);
 
QMetaObject::Connection connect(const QObject *, const char *,
                                const char *,
                                Qt::ConnectionType) const;
 
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
                                const QObject *, PointerToMemberFunction,
                                Qt::ConnectionType)
 
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
                                Functor);

我的错误是混用了第一个和第四个重载函数: 信号&MyButton::clicked是PointerToMemberFunction类型的,槽函数SLOT(button1())是const char * 类型的,所以会报错。

         因为我的button1()是自定义的private slots:的函数,所以我把SLOT(button1())换成&MainWindow::button1就可以了。


  • 23
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
这个错误提示表明在调用`transform`函数时没有找到匹配的函数。根据引用[2]中的信息,可以看出这是一个模板函数,接受四个参数`start`、`end`、`result`和`unaryFunc`。其中`start`和`end`是输入序列的起始和结束迭代器,`result`是输出序列的迭代器,`unaryFunc`是一个用于对输入序列进行转换的函数。 根据引用中的模板函数声明,`transform`函数的返回类型是`OutIter`,即输出序列的迭代器类型。根据引用中的编译错误提示,可以猜测在调用`transform`函数时,可能没有正确地指定函数参数的类型。 为了解决这个错误,你可以检查你调用`transform`函数时传递的参数是否与模板函数声明中的参数类型匹配。确保输入序列的起始和结束迭代器、输出序列的迭代器以及转换函数的类型是正确的。如果你使用了自定义类型作为参数,还需要确保你已经正确地重载了相关的运算符或者提供了适当的函数转换。 请根据你的具体代码和错误提示来检查和调整函数调用。如果你需要进一步的帮助,请提供更详细的代码和错误信息,以便更准确地解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ros2: no matching function for call to ‘tf2_ros::TransformBroadcaster::TransformBroadcaster()’](https://blog.csdn.net/yamida/article/details/113106248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C++中错误no matching function for call to transform](https://blog.csdn.net/ctrigger/article/details/110121061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值