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()有五个重载:

 

 
  1.  
    QMetaObject::Connection connect(const QObject *, const char *,
  2.  
    const QObject *, const char *,
  3.  
    Qt::ConnectionType);
  4.  
     
  5.  
    QMetaObject::Connection connect(const QObject *, const QMetaMethod &,
  6.  
    const QObject *, const QMetaMethod &,
  7.  
    Qt::ConnectionType);
  8.  
     
  9.  
    QMetaObject::Connection connect(const QObject *, const char *,
  10.  
    const char *,
  11.  
    Qt::ConnectionType) const;
  12.  
     
  13.  
    QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
  14.  
    const QObject *, PointerToMemberFunction,
  15.  
    Qt::ConnectionType)
  16.  
     
  17.  
    QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
  18.  
    Functor);


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

 

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值