Qt的信号与槽案例

4 篇文章 0 订阅

        Qt中通过connect()将信号发生者与信号接收者绑定在一起,格式如下:
        connect(信号发生者,发生的信号,信号接收者,处理函数)
        给出一个学生请老师吃饭,利用信号与槽机制实现。
        软件需求:创建2个类 Teacher类,Student类
        下课后, 老师Teacher zt 会发出(emit)一个信号:饿了hungry();
        学生响应信号Student st 处理信号的槽函数:请客吃饭treat()。
如下:
//1)主函数 头文件one.h

#ifndef ONE_H
#define ONE_H

#include <QWidget>
#include "teacher.h"
#include "student.h"

class one : public QWidget
{
    Q_OBJECT

public:
    one(QWidget *parent = 0);
    ~one();

    Teacher *zt;
    Student *st;

    void classIsOver();

};

#endif // ONE_H

//主函数 源文件one.cpp

#include "one.h"

//需求:创建2个类 Teacher类,Student类
//下课后, 老师Teacher zt 会发出一个信号 饿了
//学生响应信号Student st 处理信号的槽函数 请客吃饭




one::one(QWidget *parent)
    : QWidget(parent)
{
    zt = new Teacher(this);
    st = new Student(this);

    //连接 老师和学生
    connect(zt,&Teacher::hungry,st,&Student::treat );
    classIsOver();
}

one::~one()
{

}

void one::classIsOver()
{
    //触发老师饿了的信号
    emit zt->hungry();
}

//2)学生类 头文件Student.h

#ifndef STUDENT_H
#define STUDENT_H

#include <QObject>

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

signals:

public slots:
    //自定义槽函数
    //槽函数和信号匹配
    void treat();

};

#endif // STUDENT_H

//学生类 源文件Student.cpp

#include "student.h"
#include <QDebug>

Student::Student(QObject *parent) :
    QObject(parent)
{
}

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

//3)老师类 头文件Student.h

#ifndef TEACHER_H
#define TEACHER_H

#include <QObject>

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

signals:
    //自定义的信号,需要写到signals下
    //返回类型必须为空,信号只需要声明,不需要实现
    //信号可以有参数,可以重载
    void hungry();

public slots:

};

#endif // TEACHER_H

//老师类 源文件Student.cpp

#include "teacher.h"

Teacher::Teacher(QObject *parent) :
    QObject(parent)
{
}

        效果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种高级编程语言,被广泛应用于各个领域的软件开发和数据分析。在学习Python时,可以选择上课或者自学。 上课的话,通常有以下几种形式: 1. 在学校或培训机构参加Python课程:这种方式适合初学者,可以通过系统的教学来学习Python的基础知识和编程技巧。课程内容通常包括语法基础、数据类型、控制流、函数、面向对象编程等内容。 2. 在线学习平台参加Python课程:现在有很多在线学习平台提供Python课程,如Coursera、edX、Udemy等。这些平台上的课程可以根据自己的进度进行学习,有的还提供了实践项目和互动讨论。 3. 参加编程培训班或夏令营:有些机构会组织短期的编程培训班或夏令营,专门教授Python编程。这种方式可以在短时间内集中学习Python,并且可以与其他学员一起交流和合作。 自学的话,可以通过以下途径: 1. 在线教程和文档:Python官方网站提供了详细的教程和文档,可以从基础到高级逐步学习。此外,还有很多优秀的第三方教程和博客,如w3schools、Python官方文档、CSDN等。 2. 书籍:有很多经典的Python教材和参考书籍,如《Python编程从入门到实践》、《Python核心编程》等。通过阅读书籍可以系统地学习Python的各个方面。 3. 练习项目:通过实践项目来学习Python是非常有效的方式。可以选择一些小型的项目,如编写一个简单的网页爬虫、制作一个简单的游戏等,通过实践来巩固所学知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值