QT信号连接信号

2023-11-15

有时候代码可能复杂,我们需要一个信号连接另一个信号,比如例子中的下课不是直接运行时触发的,而是点击下课按钮

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QPushbutton.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //创建一个老师对象
    this->tc = new Teacher(this);
    //创建一个学生对象
    this->st = new Student(this);
    void(Teacher::*teachersignal2)(void) =  &Teacher::Hungry;
    void(Student::*studentslot2)(void) =  &Student::Treat;
    connect(tc,teachersignal, st, studentslot);
    QPushButton *btn = new QPushButton("下课",this);
    this->resize(600,400);

    connect(tc,teachersignal2, st, studentslot2);
    connect(btn,&QPushButton::clicked,tc,teachersignal2);
}

MainWindow::~MainWindow()
{
    delete ui;
}

扩展内容

断开信号 使用disconnect(tc,teachersignal2, st, studentslot2);
一个信号可以连接多个槽函数
多个信号可以连接一个槽函数

在teacher类加入一个crying信号

#ifndef TEACHER_H
#define TEACHER_H

#include <QObject>


class Teacher : public QObject
{
    Q_OBJECT
public:
    explicit Teacher(QObject *parent = nullptr);

signals:

  void Hungry();
  void Hungry(QString foodName);
  void Crying();  //老师感动哭了

};
#endif // TEACHER_H
#
  void(Teacher::*teachersignal)(QString) =  &Teacher::Hungry;
    void(Student::*studentslot)(QString) =  &Student::Treat;
    void(Teacher::*teachersignal2)(void) =  &Teacher::Hungry;
    void(Student::*studentslot2)(void) =  &Student::Treat;
    void(Teacher::*teachersignal3)(void) =  &Teacher::Crying;
    connect(tc,teachersignal, st, studentslot);
    //classIsOver();
    QPushButton *btn = new QPushButton("下课",this);
    this->resize(600,400);
    //connect(btn,&QPushButton::clicked,this,&MainWindow::classIsOver);

    connect(tc,teachersignal2, st, studentslot2);
    connect(tc,teachersignal3, st, studentslot2);
    connect(btn,&QPushButton::clicked,tc,teachersignal2);
    connect(btn,&QPushButton::clicked,tc,teachersignal3);


代码中我使用qpushbutton触发了两个信号,同理我也可以使用不同信号触发同一个槽函数

信号和槽函数的参数必须一一对应
信号参数个数可以多余槽的参数个数,但类型要一一对应


Qt4版本以前的信号与槽的连接
连接无参
connect(tc,SIGNAL(Hungry()),st,SLOT(Treat()));
优点,参数直观。缺点,类型不做检测(编译不做检测,运行报错)

Qt5以上支持Qt4的写法,反之不支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT信号连接信号 的相关文章

  • Windows上发生异常时抓取dump

    文章目录 正文 RaiseException函数 捕获大部分崩溃 SetUnhandledExceptionFilter 那还有小部分呢 为什么调试器可以抓到所有崩溃 CRT C STL 系统API之间的关系 CRT中几个重要的函数 退出进
  • 学长告诉我,大厂MySQL都是通过SSH连接的

    大家好 我是咔咔 不期速成 日拱一卒 一 背景 之前待的几个公司 数据库 服务器权限都是给所有后端直接拉满的 但也会出现员工离职的情况 每次有人离职时都需要改数据库密码 服务器密码 每次密码修改后得告知所有开发修改本地密码 但这样的事情也不
  • 详解反调试技术

    反调试技术 恶意代码用它识别是否被调试 或者让调试器失效 恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作 因此他们使用反调试技术尽可能地延长恶意代码的分析时间 为了阻止调试器的分析 当恶意代码意识到自己被调试时 它们可能改变
  • xilinx mipi ip

    占位
  • JSP页面中Input输入框获取当前系统时间

    JSP页面中Input输入框获取当前系统时间 在input属性value中填写如下代码即可获取系统当前时间输入 value
  • switch游戏机小白初体验

    1 switch版本区别 lite 续航版与oled的区别 oled屏幕比续航版的大 续航版和oled版都可以连接电视或显示器 lite只能玩掌机 只喜欢玩掌机的可以选lite 更便宜 国行 港版 日版的区别 国行不能与全球玩家联机 不能买
  • warning: could not find UI helper ‘git-credential-manager-ui‘

    可以先试试别人的教程 58条消息 关于git 凭证存储 credential helper配置 解决 git pull push fetch remote not found的问题 DavidFFFFFF的博客 CSDN博客 我是因为换了电
  • Python pyinstaller打包exe最完整教程

    目录 1 简介 2 安装 3 原理和打包效果 3 1 原理概述 3 2 搜索模块 3 3 打包效果概述 3 4 打包成单个文件夹 优点 缺点 3 5 打包成单个exe 优点 缺点 4 打包 4 1 基本语法 4 2 参数总览 位置参数 可选
  • IDEA导入eclipse项目并部署运行完整步骤(转发)

    首先说明一下 idea里的project相当于eclipse里的workspace 而idea里的modules相当于eclipse里的project 1 File gt Import Project 在弹出的对话框里选择要导入的项目 2
  • IAR仿真确认延时程序时间的准确性

    单片机 程序经常会用到延时函数 毫秒延时或微秒延时函数 为了确认延时函数时间的准确性 以前经常是需要通过IO口输出波形来确认时间是否准确 最近发现了个更方便准确的方法 只需要通过IAR仿真软件即可准确知道延时函数的运行时间 1 首先在IAR
  • SQL 数据更新

    SQL 数据更新 数据更新有三种 插入 修改 删除 一 插入数据 插入元组 行 INSERT Into lt 表名 gt lt 属性列1 gt lt 属性列2 gt lt 属性列3 gt lt 属性列4 gt Values lt 常量1 g
  • 2022.7台式机装机指南(3060 + 12490F)

    文章目录 硬件购买 装机避坑 系统制作 系统激活 大学四年用的华硕飞行堡垒FX86 那时候的配置还可以 8代i7 1050ti 8G 256固态 1T机械 后来又买了一张内存条 扩到了16g 四年只出过2次故障 第一次蓝屏自己修好了 第二次
  • PDF Redactor - 涂黑屏蔽PDF文字让敏感内容不可读的软件工具

    PDF Redactor是一款Windows平台下的PDF小工具软件 旨在涂黑屏蔽或删除PDF文件中的敏感文本和图像以保护隐私 被屏蔽的内容不仅在PDF阅读器中无法查看 而且即使使用文本搜索功能也无法再找到这部分内容 这些内容将从PDF文件
  • python json.dumps中文乱码问题解决

    json dumps var ensure ascii False 并不能解决中文乱码的问题 json dumps在不同版本的Python下会有不同的表现 注意下面提到的中文乱码问题在Python3版本中不存在 注 下面的代码再python
  • 解决pyside6-uic生成py代码中文为unicode(乱码)的问题

    前言 本来想用Java做客户端 后来发现很多算法还是Python有现成的比较方便 所以最终选择了pyside6 但是用Designer QT设计师 设计完后 生成的代码中文部分显示为unicode 也可以理解为乱码 就像这样 self pu
  • 前端分页插件_免费开源的React前端框架——ReactAdmin

    介绍 ReactAdmin是一个Github上免费开源的前端框架 不是组件库 也不是模板 它是一个框架 采用es6 React和Material Design构建基于Rest GraphQl API的Web应用程序 在React上star数
  • Android实现用户登录和注册界面

    我们在做android项目时经常会用到用户登录 这里呈上实现了Spinner的登录界面 初学的朋友可以直接拿过来使用 本界面使用的是流式布局 也是我最喜欢用的布局方式 同学们可以通过代码了解一下 代码中Intent的使用有点杂乱 主要是为了

随机推荐

  • sql逗号分开的指定列,分成多行

    if object id tempdb dbo tb is not null drop table tb go create table tb id int price varchar 100 customer int cinvcode i
  • 掌握这个技能,再也不用为面试发愁了

    点击上方 前端瓶子君 关注公众号 回复算法 加入前端编程面试算法每日一题群 废话只说一句 码字不易求个 收藏 学会 快行动起来吧 评论区走起 在面试时 经过简单寒暄后 面试官一般先从让候选人自我介绍开始 紧接着就是问候选人简历中所列的项目
  • weblogic CVE-2023-21839 复现

    影响版本 Weblogic 12 2 1 3 0 Weblogic 12 2 1 4 0 Weblogic 14 1 1 0 0 这里是用的docker下载的vulhub的CVE 2023 21839 靶机和攻击机都是192 168 85
  • 2019.08 FSGAN -论文解读

    原文链接 https zhuanlan zhihu com p 138042376 笔者前言 FSGAN Subject Agnostic Face Swapping and Reenactment 是ICCV19的一篇文章 主要工作是面部
  • 高等代数 二次型与矩阵的合同(第6章)1 二次型,标准形,规范形

    一 二次型 6 1 1 概念 2 非退化线性替换 准确地说 应该是将 x x x用 C x Cx Cx带入 这样能保证代换前后二次型中的元不
  • 玩转Mysql系列 - 第15篇:详解视图

    这是Mysql系列第15篇 环境 mysql5 7 25 cmd命令中进行演示 需求背景 电商公司领导说 给我统计一下 当月订单总金额 订单量 男女订单占比等信息 我们啪啦啪啦写了一堆很复杂的sql 然后发给领导 这样一大片sql 发给领导
  • Request对象和response对象

    一 概念 request对象和response对象是通过Servlet容器 如Tomcat 自动创建并传递给Servlet的 Servlet容器负责接收客户端的请求 并将请求信息封装到request对象中 然后将request对象传 递给相
  • C语言实现栈(基于数组)

    栈是一种操作受限的数据结构 只允许从一段操作 而且先进后出 FILO first in last out 这里将栈的操作封装在C语言的头文件里 实现栈的代码如下 include
  • 关于Git看这一篇就够了(IDEA版本)

    目录 一 Git简介 1 1 项目的版本管理 1 2 团队协同开发 1 3 版本管理工具 Git 二 Git下载及安装 2 1 下载Git 2 2 安装Git 2 3 检查 三 Git架构 四 Git基本使用 4 1 创建版本库 4 2 查
  • 132_Springboot总是会自动在/tmp/spring.log生成日志文件问题处理

    原因是项目配置文件中有如下引用
  • 2016年蓝桥杯预赛第十题最大比例

    题目 最大比例 X星球的某个大奖赛设了M级奖励 每个级别的奖金是一个正整数 并且 相邻的两个级别间的比例是个固定值 也就是说 所有级别的奖金数构成了一个等比数列 比如 16 24 36 54 其等比值为 3 2 现在 我们随机调查了一些获奖
  • vue 工程从window 到mac

    ERROR in src assets css theme default scss node modules css loader node modules postcss loader lib node modules sass loa
  • 五十三.L1-003 个位数统计

    include
  • 骨骼蒙皮动画(SkinnedMesh)的原理解析(一)

    一 3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化 主要种类有Morph 变形 动画 关节动画和骨骼蒙皮动画 SkinnedMesh 从动画数据的角度来说 三者一般都采用关键帧技术 即只给出关键帧的数据
  • 使用Flutter之后,我们的CPU占用率降了50%

    近年来 移动互联网迅猛发展 业务需求频繁更新 业务内容动态化需求急剧增加 纯原生开发已经无法满足业务快速增长的需求 因此诞生了多种跨平台开发框架 如 H5 原生开发 React Native 和 Weex 但这两年最受开发者青睐的莫过于 F
  • 自己编写chrome插件

    1 首先你需要一个menifest json文件 manifest version 3 name My Extension version 2 0 action default popup popup html default icon i
  • 【python基础】:分类统计各字符的个数

    功能实现 利用python实现统计一个字符串中数字 字母及其他字符的个数和各个字符的总数 方法一 利用 isdigit isalpha 函数判断字符是否是数字或者字母 代码如下 s input 请输入一串字符 num char space
  • How to Change SSH Port on CentOS 7, 8 and 9

    The default SSH service port value is 22 in which case hackers may be able to launch attacks on the server through port
  • 第十章 内部类(上)

    第十章 内部类 上 可以将一个类的定义放在另一个类的定义内部 这就是内部类 内部类是一种非常有用的特性 因为它允许你把一些逻辑相关的类组织在一起 并控制位于内部的类的可视性 然而必须要了解 内部类与组合是完全不同的概念 这一点很重要 在最初
  • QT信号连接信号

    有时候代码可能复杂 我们需要一个信号连接另一个信号 比如例子中的下课不是直接运行时触发的 而是点击下课按钮 include mainwindow h include ui mainwindow h include QPushbutton h