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();
}

相关推荐

  1. QT定义信号

    2023-12-08 07:14:02       51 阅读
  2. qt 定义信号举例

    2023-12-08 07:14:02       23 阅读
  3. Qt5定义信号的实现方式

    2023-12-08 07:14:02       42 阅读
  4. qt 定义信号 简单举例

    2023-12-08 07:14:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 07:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 07:14:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 07:14:02       82 阅读
  4. Python语言-面向对象

    2023-12-08 07:14:02       91 阅读

热门阅读

  1. 笙默考试管理系统-MyExamTest----codemirror(47)

    2023-12-08 07:14:02       51 阅读
  2. leetcode每日一题37

    2023-12-08 07:14:02       55 阅读
  3. 神经网络----网络模型的加载及保存

    2023-12-08 07:14:02       44 阅读
  4. ffmpeg学习日记619-指令-透明通道视频相关指令

    2023-12-08 07:14:02       59 阅读
  5. 低代码:美味膳食或垃圾食品?

    2023-12-08 07:14:02       57 阅读
  6. python对py文件加密

    2023-12-08 07:14:02       60 阅读
  7. python中的配置config模块

    2023-12-08 07:14:02       59 阅读