一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

  最近初学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就可以了。

posted on   一杯清酒邀明月  阅读(1504)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2021-09-26 OpenCV 找出图像中最小值最大值函数minMaxLoc的使用
2021-09-26 OpenCV 截取图像中某一区域的方法
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示