QT信号相关

本文详细讲解了connect()函数在QObject及其派生类中的使用,指明自定义类需继承QObject或其派生类才能有效,并介绍了信号与槽的建立、连接和参数对应规则。特别强调了信号发射的重要性以及如何使用自定义信号和控件动作信号。
摘要由CSDN通过智能技术生成

1、connect适用范围

connect()函数有且只能在QObject类里面和QObject派生类里面使用,
自己新建的类里面时选择的基类不是QObject类和其QObject派生类,而是Custom,使用connect()函数是无效的!!!,编译时一直报错。 因此新建类可以从Qobject,Qwidget和Qmainwindow里选择为基类。
在这里插入图片描述

当然,我们新建工程比如widget,mainwindow,dialog都是QObject的派生类,所以可以直接使用connect()函数,实现信号与槽机制.
2、使用方式
//Qt5及后期所有版本可以使用以下形式
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::test_fun);
即 connect(类对象, &类名::类成员, 类对象, &类名::类成员);
3、自定义信号使用

signals  ://定义信号

void ageChanged(int age); //虽然是一个函数,这里只管建立,不管发送。
//关联信号,使信号和槽之间建立联系,必须经发射后槽才会受到信号。
connect(boy,&Person::ageChanged,this,&Person::on_ageChanged);
//发射信号,经和槽函数绑定后,槽函数自动会接受发射过来的信号。
emit ageChanged(age); 
//槽函数,处理发射过来的信号,本例中age的值。
private slots:
void Person::on_ageChanged(int a) //参数从信号那里来

{
 

}

1、信号和槽函数的参数必须一一对应关系,经绑定后,槽函数中的参数就是从信号函数里对应的参数值
on_ageChanged(int a) 中的a值对应于ageChanged(int age)的age.
2、信号建立和连接不等于数值会自动传过来,必须经发射(emit)动作才能起作用。
3、注意,槽函数绑定的是信号!!!除了自定义signals外,还有控件产生的动作信号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Step by step c++

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

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

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

打赏作者

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

抵扣说明:

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

余额充值