QT信号量与槽

概述

这个内容是QT独有的,写的挺有意义的。之前写过一篇QT slots的函数,思来想去,觉得不是那么有趣。就决定要重新写一篇文章来聊下。

先说下槽和信号量。

用系统生成

如下图所示:
选中一个qpushbutton,然后右键转到槽,
在这里插入图片描述

选中clicked函数,如下图:
在这里插入图片描述
自己生成了一个函数在cpp文件中。

在这里插入图片描述

新增一个信号量和槽

如下图所示:
在这里插入图片描述

在这个地方可以新增一个信号量和槽,然后选中发送者,接收者,信号,槽就可以了。

代码方式

信号量和槽的宏

在这里插入图片描述

信号量和槽都用函数地址

connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked0);

lamda表达式

 connect(ui->pushButton_3, &QPushButton::clicked, this, [=](){
        printf("lamda 0\n");
    });

再看一个,如下:

connect(ui->pushButton_4, &QPushButton::clicked, this, [=](){
        emit customSlot();
    });
connect(this, &MainWindow::sig_push_btn4, this, &MainWindow::customSlot);

这个是自定义了槽和信号量。

函数指针

void (MainWindow::*CustomSlot7)() = &MainWindow::customSlot1;
connect(ui->pushButton_5, &QPushButton::clicked, this, CustomSlot7);

这个是函数指针的调用。

槽和信号量函数

信号量

在这里插入图片描述
信号量只用声明就可以了。

在这里插入图片描述
在这里插入图片描述
槽函数声明,实现都要有。

小结

这篇主要写了qt槽函数的几种调用方式,涉及到发送者,接收者,槽,信号量。这种方式有点像设计模式的观察者模式,感兴趣可以参考之前的文章观察者设计模式。至于qt的调用,再加上c++自有的可调用对象(可以参考C++可调用对象),就有多种使用方式了。感兴趣一起学习学习,可以一起。OK,翻篇。

相关推荐

  1. qt-信号

    2024-07-09 20:40:03       25 阅读

最近更新

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

    2024-07-09 20:40:03       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 20:40:03       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 20:40:03       42 阅读
  4. Python语言-面向对象

    2024-07-09 20:40:03       53 阅读

热门阅读

  1. windows局域网文件传输方案

    2024-07-09 20:40:03       23 阅读
  2. 宝塔内 计划任务更新远程主机的时间

    2024-07-09 20:40:03       24 阅读
  3. kotlin 两个 list 怎么过滤重复数据

    2024-07-09 20:40:03       20 阅读
  4. VBA中打开、保存关闭Excel工作簿的方法

    2024-07-09 20:40:03       18 阅读
  5. SQL基础

    SQL基础

    2024-07-09 20:40:03      16 阅读
  6. 如何在SpringCloud项目中实现客户端负载均衡?

    2024-07-09 20:40:03       25 阅读
  7. 深入理解 Docker 容器技术

    2024-07-09 20:40:03       29 阅读
  8. GCP FrontendConfig 详解:优化您的云负载均衡

    2024-07-09 20:40:03       28 阅读
  9. jdk1.8 ConcurrentHashMap 源码分析

    2024-07-09 20:40:03       26 阅读