Qt 中 connect 的多种方式
前言
在做项目的过程中,使用 connect 用来传数据是非常方便的,不仅可以用于数据的发送,同时也可以实现改变状态时通过函数等实现自己所需要发生变化。接下来开始讲解!
connect 简介
connect 时附属于 QObject 所在书上等等在使用 connect 时都会在前面加上 QObject::,可以以哦那个他来引用。可以通过翻译发现它是用来连接,就像是通过一根线可以让两个毫无关系的让两个人连接起来,让他们有了关系,而这根线就是他们的信号,当然信号是有发送者发出,就像两个人示好,必须有一个人首先发出示好的信号,二接收者可以通过槽函数来操作他发送的信号。
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member )
接下来介绍 connect 的几种形式:
第一种 需要填充参数
QObject::connect(radioButton_9, SIGNAL(clicked()), Dialog, SLOT(setTextFontColor()));
这种方式,他在使用槽函数的时候必须填入相对应的参数类型,必须要一一对应 SIGNAL(clicked())用来引用信号,它可以跟随到信号所发送的信号位置 SLOT(setTextFontColor())用来写槽函数,在介绍到信号时开始进入槽函数,相当于只要你发信号我立马就到!
但是在填充参数的时候要注意了一定要对应例如:QObject::connect(radioButton_9, SIGNAL(clicked(bool)), Dialog, SLOT(setTextFontColor(bool)));//有参数需要注明参数类型
第二种 直接点明参数位置
QObject::connect(lineEdit, &QLineEdit::textChanged, this,&widget::on_textChanged);
这种方式在一般做项目时比较用的多,无论是在写槽函数还是信号时,都需要在他的前面写上这个信号的父亲类,这样在后续使用中也比较方便。
第三种 直接在槽函数出些函数内容
这种方法适用于他的槽函数是独一无二的,我们也没必要在开辟出一块地方来存储这个函数,可以这样直接写在内部,但是要注意的是,()内一定要和信号的参数保持类型一致!
第四种 传送信号
QObject::connect(lineEdit, &QLineEdit::textChanged, this,&widget::on_textChanged);
这是一种比较特殊的方式,她相当于一个中间人,在一个朋友发送信号了以后立马把信号发送给另外一个朋友,这里要注意的时槽函数的地方是用来写接收者的信号!
版权声明: 本文为 InfoQ 作者【用户10086】的原创文章。
原文链接:【http://xie.infoq.cn/article/0d8f1d73eca6b9599e7641da6】。文章转载请联系作者。
评论