首页 > 其他分享 >4.自定义的信号和槽

4.自定义的信号和槽

时间:2024-08-12 20:39:13浏览次数:14  
标签:Widget 信号 parent QObject Student include Teacher 自定义

  • 自定义信号
    1.写到signal下
    2.返回void
    3.需要声明,不需要实现
    4.可以有参数,可以重载
  • 自定义槽函数
    1.返回void
    2.需要声明,也需要实现
    3.可以有参数,可以重载
    4.写到pulic slot下或者pulic或者全局函数
  • 触发自定义的信号
    1.emit 自定义信号
  • 案例:下课后,老师触发饿了信号,学生响应信号,请客吃饭。
#ifndef TEACHER_H
#define TEACHER_H

#include <QObject>

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

signals:
    //信号函数,老师饿了,只声明不实现
    void hungry();
};

#endif // TEACHER_H
#include "teacher.h"

Teacher::Teacher(QObject *parent)
    : QObject{parent}
{}
#ifndef STUDENT_H
#define STUDENT_H

#include <QObject>

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

signals:
public slots:
    //槽函数,需要声明,需要实现
    void treat();

};

#endif // STUDENT_H
#include "student.h"
#include<QDebug>
Student::Student(QObject *parent)
    : QObject{parent}
{}
void Student::treat()
{

    qDebug()<<"老师饿了,学生请客吃饭";
}

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void classOver();
private:
    Ui::Widget *ui;
    Teacher*t;
    Student*s;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    
    
    
    
    ui->setupUi(this);
    this->t=new Teacher(this);
    this->s=new Student(this);
    //先链接信号与槽
    connect(t,&Teacher::hungry,s,&Student::treat);
    //发出信号
    classOver();



}
//下课函数,封装激发信号的指令
void Widget::classOver()
{
    qDebug()<<"下课了!";
    emit t->hungry();  //激发信号
}
Widget::~Widget()
{
    delete ui;
}

标签:Widget,信号,parent,QObject,Student,include,Teacher,自定义
From: https://www.cnblogs.com/qinbaoyang/p/18318087

相关文章

  • ROS 2 自定义接口(消息、服务和动作)
    ROS2自定义接口(消息、服务和动作)在ROS2中,自定义接口是构建复杂机器人系统的核心。自定义接口使开发者能够定义特定于应用的数据结构和通信模式,包括消息(Message)、服务(Service)和动作(Action)。本文将介绍如何在ROS2中创建和使用这些自定义接口。1.自定义消息(Message)......
  • vue2 - element弹框自定义指令 实现拖动、缩放
    directive/dialogDrag.jsimportVuefrom"vue";Vue.directive('dialogDrag',{bind(el,binding,vnode,oldVnode){//弹框可拉伸最小宽高letminWidth=400;letminHeight=300;//初始非全屏letisFullScreen......
  • el-tree 组件自定义样式 最后一级flex,其余级别正常block
    先上需求的效果图el-tree的样式一般全都是block换行的,如下图先分析一下,1.树结构的级别是不确定的,但是样式上要求最后一个层级需要横着排列,其余竖着排,超出需要换行2.如何找到每一个数据项的最后一级呢?3.找到之后怎么办?ok,then,1.先通过插槽吧,因为这样咱们可以自定义最后一......
  • 无线仿真平台基带信号处理卡:612-基于6UVPX C6678+XCVU9P的4路2Gsps AD 8路2Gsps DA 信
    基于6UVPXC6678+XCVU9P的4路2GspsAD8路2GspsDA信号处理板卡   一、板卡概述      板卡基于6UVPX标准结构,包含一个C6678DSP芯片,一个XCVU9P高性能FPGA,8路DA,4路AD。 二、技术指标 ●  DSP处理器采用TI8核处理器TMS320C6678; ●  DSP外挂一组64......
  • Vue自定义指令——函数式与对象式以及注意事项
    作者:CSDN-PleaSure乐事欢迎大家阅读我的博客希望大家喜欢使用环境:vscodeChrome浏览器目录1.什么是自定义指令1.1定义2.函数式自定义指令2.1定义2.2书写格式与效果3.对象式自定义指令3.1定义3.2书写格式与效果4.需要注意的坑4.1命名4.1.1问题4.1.2原因4.1.3......
  • C#窗体自定义快捷操作键的实现 - 开源研究系列文章
          这次想到应用程序的窗体的快捷操作键的使用的问题。      上次发布过一个快捷键的例子(https://www.cnblogs.com/lzhdim/p/18342051),区别在于它是操作系统全局注册的热键,如果其它应用程序注册了对应的热键,那就会失效。此例子是对某个窗体里的按键的操作进行的......
  • Linux:线程同步机制(互斥锁、读写锁、条件变量、信号量详细分析总结)
    目录速览1、互斥锁(1)What(什么是互斥锁)(2)Why(互斥锁的用途)(3)How(如何使用互斥锁)(4)代码实践2、读写锁(1)What(什么是读写锁)(2)Why(读写锁的作用)(3)How(如何使用读写锁)(4)读写锁的特征3、条件变量(1)What(什么是条件变量)(2)Why(条件变量的作用)(3)How(如何使用条件变量实现线程......
  • 029.Vue3入门,父页面自定义Event传给子页面,子页面通过此Event回传数据给父页面
    1、App.vue代码:<template><Father/></template><scriptsetup>importFatherfrom'./view/Father.vue'</script><style></style>2、Father代码如下:<template><h3>父页面</h3><p>......
  • 生物电信号中接地电极的作用讨论
    问题作为非工科出生的我来说电路知识常常是学习生物电信号采集设备学习过程中的难点,而其中接地便是一个疑问点。为什么在采集过程中,人体需要接地呢?它和硬件设备的接地有什么区别呢?这些问题在前期的学习过程中一直困扰着我。不过现在倒是有些眉目,这里进行简单的梳理。解答首先需......
  • 一文搞懂通信原理:从消息符号到信号波形
    通信原理1.信息论基础1.1信息、信号、消息1.2信息的度量2.通信系统2.1仙农通信系统模型2.2数字通信系统2.3信号2.4消息、字符、比特、码元、数字波形2.5信息速率与码元速率3.信源编码与信道编码3.1信源编码3.2信道编码4.数字信号传输4.1基带传输4.2频......