我是靠谱客的博主 高大黑米,这篇文章主要介绍Qt>信号与槽机制,现在分享给大家,希望可以做个参考。

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


槽机制

  • 所谓信号与槽,其实就是观察者模式,当某个事件产生,他就会发出一个信号;
    这个信号是没有目的的,类似于广播;
    如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,将想要处理的信号和自己的一个函数(称之为槽slot)绑定,来处理这个信号;
    也就是说,当信号发出时,被连接的槽函数会自动被回调。
  • 系统自带的信号与槽
    在这里插入图片描述
复制代码
1
2
3
QPushButton* _bSaveFile(QStringLiteral("关闭"),this);//创建按钮 connect(_bSaveFile,&QPushButton::clicked,this,&QWidget::close);//点击按钮关闭
  • 自定义信号和槽
  1. 自定义槽函数,
    首先要明确一点,若信号函数无参数,则槽函数一定无参数,因为槽函数被信号函数调用
复制代码
1
2
3
4
5
void signal() { slot(); }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
//定义槽函数: public slots: void savefileway(); //绑定信号与槽函数: connect(_BSaveFileWay,&QPushButton::clicked,this,&myLife::savefileway);//点击按钮选择存储路径 //实现槽函数 void myLife::savefileway() { qDebug() << QStringLiteral("选择存储路径"); }
  1. 自定义信号
    信号只需要声明,不需要定义
    信号函数没有返回值
复制代码
1
2
3
4
5
signals: void start_video(int a); public slots: void emit_signal();//需要将信号进行发送

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

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

最后

以上就是高大黑米最近收集整理的关于Qt>信号与槽机制的全部内容,更多相关Qt>信号与槽机制内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部