QT信号量与槽

文章目录

概述

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

先说下槽和信号量。

用系统生成

如下图所示:

选中一个qpushbutton,然后右键转到槽,

选中clicked函数,如下图:

自己生成了一个函数在cpp文件中。

新增一个信号量和槽

如下图所示:

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

代码方式

信号量和槽的宏

信号量和槽都用函数地址

cpp 复制代码
connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked0);

lamda表达式

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

再看一个,如下:

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

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

函数指针

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

这个是函数指针的调用。

槽和信号量函数

信号量

信号量只用声明就可以了。


槽函数声明,实现都要有。

小结

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

相关推荐
郝学胜-神的一滴10 分钟前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
啦啦啦啦啦zzzz16 分钟前
5种IO模型
运维·服务器·网络·c++
呱呱巨基30 分钟前
Docker 基础概念学习
linux·c++·学习·docker
AI的探索之旅34 分钟前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
我是小灰灰吖2 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
郝学胜_神的一滴2 小时前
C++20 高级编程 001:从极简HelloWorld到现代类型体系全梳理
c++·后端
Lazionr2 小时前
list容器详解——双向链表的封装与使用
数据结构·c++·链表·list
Nil2082 小时前
C++ emplace_back 与 push_back 详解
开发语言·c++
漂流瓶jz2 小时前
UVA-12174 Shuffle的播放记录 题解答案代码 算法竞赛入门经典第二版
数据结构·c++·算法·图论·滑动窗口·算法竞赛入门经典·uva
Darkwanderor2 小时前
线程概念和Linux线程
linux·c语言·c++