Qt5.9中QObject::connect()函数用法(函数使用的前提条件和参数详解)

本文章主要总结Qt5.9中QObject::connect()函数的用法,全文分为两大部分,第一部分讲解connect函数使用的前提条件,第二部分讲解connect函数各个参数详解和具体的用法实例。


一、首先需要注意的是,connect()函数有且只能在QObject类里面和QObject派生类里面使用,自己新建的类里面(基类不是QObject类和其QObject派生类)使用connect()函数是无效的,编译时一直报错。当然,我们新建工程比如widget,mainwindow,dialog都是QObject的派生类,所以可以直接使用connect()函数,实现信号与槽机制。


1.1类ClassMQTT不是QObject类也不是其派生类时,使用connect()信号与槽机制时,编译会报错,如下图所示:


connect()函数错误用法



connect()函数错误用法


1.2类ClassMQTT是QObject类的派生类时,使用connect()信号与槽机制时,编译通过,如下图所示:

connect()函数正确用法


connect()函数正确用法



二、connect()函数各个参数详解和使用实例。

static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);

2.1函数参数详解:第一个参数sender为发送对象;第二个参数为发送对象里面的一个信号;第三个参数为接收对象;第四个参数为接收对象里面的槽函数。一般我们使用发送者触发信号,然后执行接收者的槽函数。


2.2 connect()函数使用的一个实例:


如上图所示,信号参数用SIGNAL包含,槽函数用SLOT包含。然后在对应头文件里面添加槽函数,如下图所示:



接着可以定义槽函数的内容,这样就实现了用信号触发执行槽函数的功能了。


2.3 connect的信号和槽的对应机制可以是一个信号对多个槽函数,也可以是多个信号对应一个槽函数。


2.4 错误原理:发送者和接受者必须来自QObject。



参考内容:

http://blog.csdn.net/u012964993/article/details/30454923(重点参考)

http://blog.csdn.net/JuanA1/article/details/6633184

http://blog.csdn.net/kingle123/article/details/72871731

http://blog.csdn.net/jiang_yaling/article/details/72850874

  • 17
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: QObject::connect函数可以用来建立对象之间的信号的连接,可以使一个对象的信号触发另一个对象的函数。它的用法是:QObject::connect(sender, signal, receiver, slot)。 ### 回答2: QObject::connect函数是Qt用于建立信号连接的函数,它的语法如下: QObject::connect(sender, signal, receiver, slot, connectionType); 其,sender是发送信号的对象,signal是发出的信号,receiver是接收信号的对象,slot是处理信号函数connectionType是一个可选参数,用于指定连接的类型,默认为Qt::AutoConnection。 使用QObject::connect函数,首先需要确定信号函数的声明,然后可以在程序的任意位置调用该函数进行连接。例如,假设有一个按钮对象button和一个函数slotFunction,可以使用以下代码连接信号: QObject::connect(button, SIGNAL(clicked()), this, SLOT(slotFunction())); 在这个例子,当按钮被点击时,会触发一个clicked信号,然后会调用函数slotFunction来处理该信号。 连接时还可以使用lambda表达式来代替函数,例如: QObject::connect(button, &QPushButton::clicked, [](){ qDebug() << "Button clicked"; }); 这里使用了C++11的lambda表达式作为函数,当按钮被点击时,会输出一条调试信息。 需要注意的是,QObject::connect函数只能连接QObject或其子类的实例之间的信号,且函数必须是可调用的(可以是普通函数、成员函数、静态函数等)。 总结而言,QObject::connect函数是Qt用于建立信号连接的重要函数,它的使用需要理解信号的声明,并进行正确的参数传递。 ### 回答3: QObject::connect函数用于建立信号之间的连接,使得当信号触发时,函数会被自动调用。 函数的基本语法如下: connect(sender, signal, receiver, slot, Qt::ConnectionType); 其,sender是发送信号的对象,signal是发送的信号,receiver是接收信号的对象,slot是接收信号调用的函数。 例子: 我们有一个名为button的QPushButton对象,我们想在用户点击按钮时触发一个名为myFunction的函数。 首先,我们需要在Qt头文件声明和定义函数myFunction。 然后,在我们的代码,我们可以连接按钮的clicked信号和myFunction函数,如下所示: QObject::connect(button, &QPushButton::clicked, this, &MyClass::myFunction); 在这个例子,button是发送clicked信号的对象,&QPushButton::clicked表示clicked信号,this是接收信号的对象,&MyClass::myFunction表示myFunction函数。 最后一个参数Qt::ConnectionType是可选的,默认为Qt::AutoConnection,会根据发送和接收对象的线程自动选择信号的连接方式。你可以根据需要使用其他连接方式。 总结起来,QObject::connect函数简单地描述了信号之间的连接关系,使得当信号发出时,函数会被自动调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值