QT的信号和槽函数的使用(一)

一,信号的使用

语法:

参数解释:

  1. sender:发出信号的对象
  2. signal:发送对象发出的信号
  3. receiver:接收信号的对象
  4. slot:接收对象在接收到信号之后所需要调用的函数(槽函数)
    自带信号的槽函数的使用案例
  //第一个参数是:按键   第二参数是:处理的点击事件,
    //第三个参数接收到事件的处理的人
    //第四个参数处理事件
    connect(ui->pushButton, &QPushButton::clicked, this, &QMainWindow::close);

这里写图片描述

二,自定义的信号处理事件

1. newspaper.h头文件
#ifndef NEWSPAPER_H
#define NEWSPAPER_H

#include <QObject>

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

    //发送信令
    void sendSignal3();

signals:
    //信令操作
    void hasNewsPaper();
    void hasNewsPaper(QString name);


public slots:
};

#endif // NEWSPAPER_H
2.newspaper.cpp实现
#include "newspaper.h"

NewsPaper::NewsPaper(QObject *parent) : QObject(parent)
{

}

void NewsPaper::sendSignal3()
{
    //发送自定义信令
    emit hasNewsPaper();
     emit hasNewsPaper("sdlkfj");
}
3.Reader.h头文件
#ifndef READER_H
#define READER_H

#include <QObject>

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

    //信令处理函数, 槽函数
    void buyNewsPaper3();
    void buyNewsPaper3(QString name);

signals:

public slots:
};

#endif // READER_H
4.实现
#include "reader.h"
#include <QDebug>
Reader::Reader(QObject *parent) : QObject(parent)
{

}

void Reader::buyNewsPaper3()
{

    qDebug() << "songli" ;
}

void Reader::buyNewsPaper3(QString name)
{

    qDebug() << "songli name :" << name  ;
}
测试:
#include "mywidget.h"
#include "ui_mywidget.h"
#include "newspaper.h"
#include "reader.h"

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);

    NewsPaper* newsPaper = new NewsPaper(this);

    Reader* reader = new Reader(this);

    connect(ui->pushButton, &QPushButton::clicked, newsPaper, &NewsPaper::sendSignal3);

    void(NewsPaper::*myfunc)(QString) = &NewsPaper::hasNewsPaper;
    void(Reader::*myRead)(QString) = &Reader::buyNewsPaper3;

    connect(newsPaper, myfunc, reader, myRead);


}

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

这里写图片描述

三,总结

QT的信令就是IOC控制反转的实现

Created with Raphaël 2.1.0 点击事件的通知 点击事件的通知 处理事件的的人 处理事件的的人 点击事件(是否点击)
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值