QT 信号和槽机制

信号:各种事件

槽: 响应信号的动作

当某个事件发生后,如某个按钮被点击了一下,它就会发出一个被点击的信号(signal

某个对象接收到这个信号之后,就会做一些相关的处理动作(称为槽slot)。

但是Qt对象不会无故收到某个信号,要想让一个对象收到另一个对象发出的信号,这时候需要建立连接(connect

​​​​​​​1、系统自带的信号和槽

按钮最大的功能也就是点击后触发一些事情,比如我们点击按钮,就把当前的窗口给关闭掉,那么在Qt中,这样的功能如何实现

其实两行代码就可以搞定了,我们看下面的代码

  QPushButton * quitBtn = new QPushButton("关闭窗口",this);

  connect(quitBtn,&QPushButton::clicked,this,&MyWidget::close);

第一行是创建一个关闭按钮,这个之前已经学过,第二行就是核心了,也就是信号槽的使用方式

connect函数是建立信号发送者、信号、信号接收者、槽四者关系的函数:

connect(sender, signal, receiver, slot);

参数解释:

    1. sender:信号发送者
    2. signal:信号
    3. receiver:信号接收者
    4. slot:接收对象在接收到信号之后所需要调用的函数(槽函数)

这里要注意的是connect的四个参数都是指针,信号和槽是函数指针

系统自带的信号和槽如何查找呢,这个就需要利用帮助文档了,在帮助文档中比如我们上面的按钮的点击信号,在帮助文档中输入QPushButton,首先我们可以在Contents中寻找关键字 signals,信号的意思,但是我们发现并没有找到,这时候我们应该想到也许这个信号的被父类继承下来的,因此我们去他的父类QAbstractButton中就可以找到该关键字,点击signals索引到系统自带的信号有如下几个

这里的clicked就是我们要找到,槽函数的寻找方式和信号一样,只不过他的关键字是slot。

相关推荐

  1. 信号(Qt)

    2024-02-14 18:38:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-14 18:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-14 18:38:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-14 18:38:01       82 阅读
  4. Python语言-面向对象

    2024-02-14 18:38:01       91 阅读

热门阅读

  1. Spring Security 自定义SecurityContextRepository

    2024-02-14 18:38:01       47 阅读
  2. go面试题--使用两个goroutine交替打印数字与字母

    2024-02-14 18:38:01       57 阅读
  3. leetcode第83场双周赛

    2024-02-14 18:38:01       58 阅读
  4. 实现Singleton模式-C#

    2024-02-14 18:38:01       47 阅读
  5. Kubernetes的服务质量(QoS)

    2024-02-14 18:38:01       59 阅读
  6. Rust结构体详解:定义、使用及方法

    2024-02-14 18:38:01       51 阅读
  7. C#系列-C#EF框架实现增删改查(27)

    2024-02-14 18:38:01       50 阅读