QT----自定义信号和槽

第二天

2.1自定义信号和槽

新建一个Qtclass

在这里插入图片描述

自定义信号:返回值是void ,只需要声明,不需要实现,可以有参数,可以重载

自定义槽:返回值void ,需要声明,也需要实现,可以有参数,可以发生重载

首先新建学生和老师的类。在老师的头文件中添加自定义信号,将代码写在signals:下来实现自定义信号(只需要声明不需要实现)

class Teacher  : public QObject
{
    Q_OBJECT
public:
    Teacher(QObject *parent);
    ~Teacher();
//自定义信号写到signals下
//返回值是void ,只需要声明,不需要实现
//可以有参数,可以重载
signals:
    void hungry();
};

在学生类里定义槽返回值void ,需要声明,也需要实现可以有参数,可以发生重载。

class Student  : public QObject
{
public:
 Student(QObject *parent);
 ~Student();
public slots:
 //返回值void ,需要声明,也需要实现
 //可以有参数,可以发生重载
 void treat();
};

void Student::treat()
{
 qDebug("请老师吃饭");
}

现在weidet头文件里新建老师和学生的指针,在到cpp里把他们实例化绑定到父类加入对象树,并且使用connect进行连接。光有连接还不行(=必须要先连接在调用=),需要调用的时机,使用emit来定义触发的时机。写完后就能在输出里看到打印了这段文字。

#include <QtWidgets/QWidget>
#include "ui_widget.h"
#include "Teacher.h"
#include "Student.h"

class widget : public QWidget
{
    Q_OBJECT
public:
    widget(QWidget *parent = nullptr);
    ~widget();
private:
    Ui::widgetClass ui;

    //先申明两个指针
    Teacher* te;
    Student* st;
  //声明调用函数


    void classisover();
};

#include "widget.h"

widget::widget(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    //创建一个老师对象,右边的this是设置父类加入对象树
    this->te = new Teacher(this);

    //创建一个学生对象
    this->st = new Student(this);
    //搭建连接,要先连接在传递信号
    connect(te,&Teacher::hungry,st,&Student::treat);

    classisover();
}

widget::~widget()
{
    
}

void widget::classisover()
{
    //下课函数,调用后出发老师饿了的信号
    emit te->hungry();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227930.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习Opencv(蝴蝶书/C++)相关1——4.图形和大型数组类型

文章目录 1. 多维度数组和多通道数组区别2. NAryMatIterator详解2.1 介绍2.2 dispatch和SIMD(OpenCV和numpy)2.2.1 OpenCV的2.2.2 numpy的2.2.3 OpenCV文档搜索2.3 调用指令集对代码进行优化2.4 NAryMatIterator理解2.4.1 plane和连续2.4.2 构造函数和迭代2.5 NAryMatIterato…

快速认识什么是:Kubernetes

每次谈到容器的时候&#xff0c;除了Docker之外&#xff0c;都会说起 Kubernetes&#xff0c;那么什么是 Kubernetes呢&#xff1f;今天就来一起学快速入门一下 Kubernetes 吧&#xff01;希望本文对您有所帮助。 Kubernetes&#xff0c;一种用于管理和自动化云中容器化工作负…

从传统到胜利:广汽集团汽车产业创新之旅

置身于汽车行业百年未有之大变局&#xff0c;作为传统车企中的排头兵&#xff0c;广汽创新可圈可点&#xff0c;广汽近年来取得了骄人业绩&#xff0c;不论是整体产销规模&#xff0c;还是新能源汽车产业化、新技术领域开拓等&#xff0c;都呈现节节攀升的局面。本文奖从产业变…

【网络安全】零日漏洞(0day)是什么?如何防范零日攻击?

零日攻击是利用零日漏洞&#xff08;0day&#xff09;对系统或软件应用发动的网络攻击&#xff0c;近年来&#xff0c;零日攻击威胁在日益增长且难以防范&#xff0c;零日攻击已成为企业网络信息安全面临的最严峻的威胁之一。 文章目录 What is a zero-day attack&#xff1f;…

2023年12月8日历史上的今天大事件早读

1633年12月8日 明代科学家徐光启逝世 1794年12月8日 法国大革命吉伦派分子被接纳进法国国民大会 1813年12月8日 已丧失听觉的贝多芬指挥自己第七交响乐的首演音乐会 1856年12月8日 英国物理学家、电子发现者约瑟夫-约翰-汤姆逊出生 1920年12月8日 西北五马联合自治 1925年…

Python django-xadmin:构建强大的 Django 后台管理系统

概要 Django作为一款强大的Web框架&#xff0c;其后台管理系统提供了便捷的数据管理和操作方式。而 django-xadmin 则为Django的后台管理系统提供了更加强大的功能和灵活的定制选项。在本文中&#xff0c;我们将深入研究如何使用django-xadmin&#xff0c;并通过详细的示例代码…

0009Java程序设计-ssm微信小程序在慢性疾病管理中的应用

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例…

Navicat连接Oracle数据库

Navicat连接Oracle数据库 打开服务里面找到Oracle服务 OracleServerXE或者OracleServerTTL 创建数据库连接 连接名默认自己起 主机选择本地 端口默认 服务名在服务中可以找到输入后缀 用户名默认都是system 密码是创建oracle时候填写的口令 点击测试连接即可

老师如何管理课堂纪律?

在教学过程中&#xff0c;保持良好的课堂纪律是十分重要的&#xff0c;它能够保证教学质量、促进学生学习效果的提升和教师教学效率的提高。然而&#xff0c;如何有效地管理课堂纪律成为一个极为重要的问题。接下来&#xff0c;本文将介绍几种管理课堂纪律的方法。 1. 建立规章…

flutter添加全局水印

效果&#xff1a; 可以直接引用&#xff1a;disable_screenshots: ^0.2.0 但是有时候直接引用会报错&#xff0c;可以不引用插件直接把下面的源码工具类放在项目里面 工具类源码&#xff1a; import dart:io; import dart:math;import package:flutter/cupertino.dart; impor…

docker:搭建私有仓库

文章目录 1、拉取镜像2、运行容器3、测试成功4、修改daemon.json5、重启docker 服务6、上传镜像到私有仓库6.1 标记某个镜像为私有仓库镜像6.2 上传镜像到私有仓库 其他注意项 1、拉取镜像 docker pull registry2、运行容器 docker run -di --nameregistry -p 5000:5000 regi…

北京发布阅读分级指南 促进阅读素养提升

12月5日,《北京市中小学生阅读能力分级标准指南(试行)》发布。据悉,指南适用于义务教育阶段和高中阶段,共构建五级能力分级指标体系。旨在通过明确各学年段学生的阅读素养发展目标来指导学生进行分级阅读,从而淡化学科界限,突出学生在学习、生活中真实的阅读情境和阅读能力要求…

如何通过EDI向Daimler发送发票?

此前的文章&#xff1a;Daimler EDI 项目案例 中&#xff0c;我们已经成功对接Daimler&#xff0c;接下来我将为大家介绍如何将发票由Daimler的发票系统切换至EDI。 EDI需求背景 在Daimler的前期需求中&#xff0c;只涉及到了VDA4905交付预测以及VDA4913发货通知两种报文。对…

java版王者荣耀(源代码)

1.项目结构截图 2.源代码 2.1 backgroud package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {public Background(GameFrame gameFrame) {super(gameFrame);// TODO Auto-generated constructor stub}Image bg Toolkit.ge…

直方图均衡化实现

一 直方图均衡化的概念 直方图均衡化(Histogram Equalization)是一种**增强图像对比度**(Image Contrast)的方法&#xff0c;其主要思想是将一副图像的**灰度直方图分布**通过**累积分布函数**变成**近似均匀分布**&#xff08;直观上在某个灰阶范围内像素值保持一致 &#xf…

Linux信号量

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容感性认识了信号量&#xff0c;并且认识了IPC资源在操作…

为什么要数据库优化?

为什么数据库需要进行优化&#xff1f; 数据库性能瓶颈 数据库服务器的性能受许多因素影响&#xff0c;包括硬件能力、系统规模、业务模型及架构、代码设计、数据库表设计、系统环境等。 因此&#xff0c;可以从几个方面进行数据库优化&#xff0c; 喜欢点赞收藏转发&#xff…

小红书AI文章写作工具,免费的小红书AI写作工具有哪些

社交媒体已经成为人们交流、分享生活和获取信息的主要平台之一。而在这众多社交媒体中&#xff0c;小红书以其独特的社区氛围和内容特色而备受瞩目。如何更高效地进行小红书文章创作&#xff0c;本文将深入研究小红书文章AI写作工具。 小红书文章AI写作工具背后的技术 随着人工…

JS基础面试题之手写bind

JS基础面试题之手写bind 手写bind返回函数的模拟实现传参的模拟实现构造函数效果的模拟实现构造函数效果的优化实现最终版 手写bind bind()方法会创建一个新的函数。当这个函数被调用时&#xff0c;bind()的第一个参数将作为它的运行时的this&#xff0c;之后的一序列参数将会在…

VSCode SSH登录服务器 提示XHR failed

设置->搜索“代理” 把图中的√去掉 重启 即可