最近初学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就可以了。
分类:
Qt
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-09-26 OpenCV 找出图像中最小值最大值函数minMaxLoc的使用
2021-09-26 OpenCV 截取图像中某一区域的方法