马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
函数原型
- static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
-
- static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection);
- inline QMetaObject::Connection connect(const QObject *sender, const char *signal,const char *member, Qt::ConnectionType type = Qt::AutoConnection) const;
复制代码 统共有五个参数,从左到右分别为为发送的对象指针、发送信号、吸取对象指针、吸取对象的槽函数、毗连范例。
一、用法
方法一:
使用SIGNAL和SLOT宏,qt4用法- connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(slotFunc(bool)));
复制代码 方法二:
直接使用函数指针,槽函数没有重载的话,直接使用函数所在就行。存在多参数情况下使用static_cast<>()--C++11,可指定参数- connect(ui->pushButton,&QPushButton::clicked,this,static_cast<void(MainWindow::*)(bool)>(&MainWindow::slotFunc));
复制代码 方法三:
QOverload<>: f()--qt5- connect(ui>pushButton,&QPushButton::clicked,this,QOverload<bool>::of(&MainWindow::slotFunc));
复制代码 方法三:
qOverload<>(),须要C++14的支持- connect(ui>pushButton,&QPushButton::clicked,this,qOverload<bool>(&MainWindow::slotFunc));
复制代码 方法四:
lambada表达式,一样平常可捕捉this指针使用--C++11- connect(ui>pushButton,&QPushButton::clicked,this,[this](bool check){});
复制代码 二、connect失败情况
1、信号发送者或槽吸取者之一已被删除,大概还没还没被创建初始化
2、实行毗连的类或对象不是从QObject派生,大概没有使用Q_OBJECT宏
三、connect断开情况
1、表现调用disconnect
2、信号发送者或槽吸取者之一被删除
|