Qt-connect总结

[复制链接]
发表于 2026-2-6 07:01:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
函数原型
  1. static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
  2. static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection);
  3. inline QMetaObject::Connection connect(const QObject *sender, const char *signal,const char *member, Qt::ConnectionType type = Qt::AutoConnection) const;
复制代码
统共有五个参数,从左到右分别为为发送的对象指针、发送信号、吸取对象指针、吸取对象的槽函数、毗连范例。
一、用法

方法一:
使用SIGNAL和SLOT宏,qt4用法
  1. connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(slotFunc(bool)));
复制代码
方法二:
直接使用函数指针,槽函数没有重载的话,直接使用函数所在就行。存在多参数情况下使用static_cast<>()--C++11,可指定参数
  1. connect(ui->pushButton,&QPushButton::clicked,this,static_cast<void(MainWindow::*)(bool)>(&MainWindow::slotFunc));
复制代码
方法三:
QOverload<>:f()--qt5
  1. connect(ui>pushButton,&QPushButton::clicked,this,QOverload<bool>::of(&MainWindow::slotFunc));
复制代码
方法三:
qOverload<>(),须要C++14的支持
  1. connect(ui>pushButton,&QPushButton::clicked,this,qOverload<bool>(&MainWindow::slotFunc));
复制代码
方法四:
lambada表达式,一样平常可捕捉this指针使用--C++11
  1. connect(ui>pushButton,&QPushButton::clicked,this,[this](bool check){});
复制代码
二、connect失败情况

1、信号发送者或槽吸取者之一已被删除,大概还没还没被创建初始化
2、实行毗连的类或对象不是从QObject派生,大概没有使用Q_OBJECT宏
三、connect断开情况

1、表现调用disconnect
2、信号发送者或槽吸取者之一被删除
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表