Qt—信号与槽机制

1、F4 F3 ui界面编辑方式
2、ui界面 signal slots Edit 方式
这种方式只能添加系统槽函数。
3、最常规的用法,QT4下使用,现在不推荐:
connect(btn,SIGNAL(clicked()),this,SLOT(myclicked()));

connect(ui->lineEdit,SIGNAL(textEdited(QString)),ui->textBrowser,SLOT(setText(QString)));
4、自动关联方式,button点右键 转到槽
单个编辑槽函数。
5、connect()函数基于函数指针的重载形式,QT5下使用,推荐:
在这里插入图片描述
btn为信号发送者,SIGNAL为信号,this指当前对象为信号接收者,SLOT是被信号触发的槽函数。
对比用法
connect(btn,&QPushButton::clicked,this,&MainWindow::myclicked);
繁琐,但代码可读性高。
6、手动提交,emit方式
connect(this,SIGNAL(mySignal()),this,SLOT(myclicked()));
7、lambda,C++11下使用
connect(btn,&QPushButton::clicked,btn{
if(btn->text()==”lambda”)
btn->setText(“”);
else
btn->setText(“lambda”);

qDebug()<<”111”;
});
用于定义并创建匿名的函数对象,以简化编程工作。

connect()函数的signal和slot是接收字符串,一旦出现连接不成功的情况,Qt4是没有编译错误的,而是在运行的时候给出错误,增加了程序的不稳定性。
Qt5在语法上完全兼容Qt4。
只有继承自QObject类的类才具有信号和槽的能力。凡是QObject类都应该在头文件第一行代码写上Q_OBJECT。
使用signals标记信号函数,信号是一个函数声明,返回值为void,不需要实现函数代码。
槽函数作为普通成员函数,会受到public、private、protected的影响。
任何成员函数、static函数、全局函数和lambda表达式都可以作为槽函数。
当一个信号与多个槽链接时,槽的调用顺序是不确定的。
当多个信号与一个槽链接时,任意一个信号发出,槽就会被调用。
当一个对象delete后,Qt自动取消所有链接到这个对象上面的槽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿友不胖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值