概述
声明槽函数时必须加上slots关键字,就是传函数指针,进行回调
槽机制
- 所谓信号与槽,其实就是观察者模式,当某个事件产生,他就会发出一个信号;
这个信号是没有目的的,类似于广播;
如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,将想要处理的信号和自己的一个函数(称之为槽slot)绑定,来处理这个信号;
也就是说,当信号发出时,被连接的槽函数会自动被回调。 - 系统自带的信号与槽
QPushButton* _bSaveFile(QStringLiteral("关闭"),this);//创建按钮
connect(_bSaveFile,&QPushButton::clicked,this,&QWidget::close);//点击按钮关闭
- 自定义信号和槽
- 自定义槽函数,
首先要明确一点,若信号函数无参数,则槽函数一定无参数,因为槽函数被信号函数调用
void signal()
{
slot();
}
//定义槽函数:
public slots:
void savefileway();
//绑定信号与槽函数:
connect(_BSaveFileWay,&QPushButton::clicked,this,&myLife::savefileway);//点击按钮选择存储路径
//实现槽函数
void myLife::savefileway()
{
qDebug() << QStringLiteral("选择存储路径");
}
- 自定义信号
信号只需要声明,不需要定义
信号函数没有返回值
signals:
void start_video(int a);
public slots:
void emit_signal();//需要将信号进行发送
在控件下,绑定clicked信号与槽函数emit_signal,就能在其他控件使用本控件受事件信号,调用发射信号槽函数所发射信号
void myWidget::emit_signal()
{
emit start_video(10);//发射信号
}
- 信号与槽注意事项
- 信号的发送者与接收者必须是QObjet子类对象(Lambda表达式除外,它不需要接收者)
- 信号和槽函数返回值都是void,信号只需要声明,槽函数既要声明又要定义,槽函数受public,protected,private影响
- 使用emit在恰当的位置发送信号
- 使用connect()链接信号与槽
- 槽的参数小于等于信号的参数
- 一个信号可以与多个槽函数链接,多个信号可以链接到一个槽
最后
以上就是高大黑米为你收集整理的Qt>信号与槽机制的全部内容,希望文章能够帮你解决Qt>信号与槽机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复