我是靠谱客的博主 高大黑米,最近开发中收集的这篇文章主要介绍Qt>信号与槽机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

声明槽函数时必须加上slots关键字,就是传函数指针,进行回调


槽机制

  • 所谓信号与槽,其实就是观察者模式,当某个事件产生,他就会发出一个信号;
    这个信号是没有目的的,类似于广播;
    如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,将想要处理的信号和自己的一个函数(称之为槽slot)绑定,来处理这个信号;
    也就是说,当信号发出时,被连接的槽函数会自动被回调。
  • 系统自带的信号与槽
    在这里插入图片描述
	QPushButton* _bSaveFile(QStringLiteral("关闭"),this);//创建按钮
	connect(_bSaveFile,&QPushButton::clicked,this,&QWidget::close);//点击按钮关闭
  • 自定义信号和槽
  1. 自定义槽函数,
    首先要明确一点,若信号函数无参数,则槽函数一定无参数,因为槽函数被信号函数调用
void signal()
{
	slot();
}
//定义槽函数:
public slots:
	void savefileway();

//绑定信号与槽函数:
	connect(_BSaveFileWay,&QPushButton::clicked,this,&myLife::savefileway);//点击按钮选择存储路径

//实现槽函数
void myLife::savefileway()
{
	qDebug() << QStringLiteral("选择存储路径");
}
  1. 自定义信号
    信号只需要声明,不需要定义
    信号函数没有返回值
signals:
	void start_video(int a);
public slots:
	void emit_signal();//需要将信号进行发送

  在控件下,绑定clicked信号与槽函数emit_signal,就能在其他控件使用本控件受事件信号,调用发射信号槽函数所发射信号

void  myWidget::emit_signal()
{
	emit start_video(10);//发射信号
}
  • 信号与槽注意事项
    1. 信号的发送者与接收者必须是QObjet子类对象(Lambda表达式除外,它不需要接收者)
    2. 信号和槽函数返回值都是void,信号只需要声明,槽函数既要声明又要定义,槽函数受public,protected,private影响
    3. 使用emit在恰当的位置发送信号
    4. 使用connect()链接信号与槽
    5. 槽的参数小于等于信号的参数
    6. 一个信号可以与多个槽函数链接,多个信号可以链接到一个槽

最后

以上就是高大黑米为你收集整理的Qt>信号与槽机制的全部内容,希望文章能够帮你解决Qt>信号与槽机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部