QT信号量与槽

news/2024/7/21 11:02:21 标签: qt, c++

文章目录

  • 概述
    • 用系统生成
    • 新增一个信号量和槽
    • 代码方式
      • 信号量和槽的宏
      • 信号量和槽都用函数地址
      • lamda表达式
      • 函数指针
    • 槽和信号量函数
      • 信号量
  • 小结

概述

这个内容是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,翻篇。


http://www.niftyadmin.cn/n/5545145.html

相关文章

QT5.12.9 通过MinGW64 / MinGW32 cmake编译Opencv4.5.1

一、安装前准备: 1.安装QT,QT5.12.9官方下载链接:https://download.qt.io/archive/qt/5.12/5.12.9/ QT安装教程:https://blog.csdn.net/Mark_md/article/details/108614209 如果电脑是64位就编译器选择MinGW64,32位就选择MinGW…

duplicate key value violates unique constraint

duplicate key value violates unique constraint 遇到的问题 你在尝试向数据库表 goods 插入新记录时,收到了 duplicate key value violates unique constraint 的错误。尽管你确认数据库中没有与尝试插入的 id 相同的记录,但错误依旧存在。进一步的调…

STM32中的DMA:解锁高效数据传输的秘密武器(内附实例)

目录 引言 理解DMA:数据的高效搬运工 DMA的主要特性 多优先级请求 事件标志 数据对齐 多样化的数据传输路径 广泛的数据源与目标 最大数据长度 DMA寄存器详解 增量与循环模式 DMA中断机制 ​编辑 小实验:DMA-ADC串口发送 引言 在现代嵌入…

20.呼吸灯:利用PWM控制小灯在相同时间段内的不同占空比

(1)设计一段代码,实现led灯在一秒内由完全熄灭到完全点亮,在第二秒由完全点亮转为完全熄灭,循环往复。 (2)Verilog代码: module breath_led(clk,reset_n,led);input clk;input res…

ansible常见问题配置好了密码还是报错

| FAILED! > { “msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.” } 怎么解决&#xf…

线程交互现象

线程交互现象 小明对自家的狗子有个规定,就是在狗狗还没吃完的时候,可以继续给他加饭 不好的解决方式 狗狗感觉一千年没吃饭了,狼吞虎咽起来,最后饭只剩下最后一点点,吃饭线程中使用while循环判断是否是1,…

数据分析如何正确地学习与使用

我们面对很多问题的认知和解决方案,会极大地影响我们在数据分析之路上的成长,甚至是很长一段时间内的职业发展 一、如何正确地学习数据分析? 一定要不断积累搭建自己的知识框架! 1.先充分理解别人的框架。 2.看已有的知识框架能不…

Mysql之Using index for skip scan

一、Using index for skip scan 在 MySQL 中,EXPLAIN 语句用于显示查询执行计划,帮助我们理解查询是如何被执行的,以及如何优化查询。其中,Extra 列提供了关于查询执行的一些额外信息。当 Extra 列显示 Using index for skip sca…