Qt信号之自定义信号槽

6 篇文章 0 订阅

1、新建一个后台控制qt项目;添加两个类:newspaper 和 paper

2、程序功能实现:通过调用name_to_reader()函数,将信号从一个类,传到另一个类里。

      类与类之间是不能直接通信的,通过这个程序,展示了类间的通信,信号之间的传参。

3、程序:

newspaper.h

#ifndef NEWSPAPER_H
#define NEWSPAPER_H

#include <QObject>
#include <QString>


class Newspaper : public QObject
{
    Q_OBJECT
public:
    explicit Newspaper(const QString &name);
    ~Newspaper();
    void newspaper_slot();

signals:
    void name_to_reader(QString name);

public slots:

private:

   QString name;
};

#endif // NEWSPAPER_H

添加函数 void  newspaper()、和信号 void name_to_reader(Qstring name)。

newspaper.cpp

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


Newspaper::Newspaper(const QString &name) :
    name(name)
{

}

Newspaper::~Newspaper()
{

}

void Newspaper::newspaper_slot()
{
    emit name_to_reader(name);
}

reader.h

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


Newspaper::Newspaper(const QString &name) :
    name(name)
{

}

Newspaper::~Newspaper()
{

}

void Newspaper::newspaper_slot()
{
    emit name_to_reader(name);
}

reader.cpp

 

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

Reader::Reader(QObject *parent) : QObject(parent)
{

}

Reader::~Reader()
{

}

void Reader::recv(QString &name)
{
    qDebug() << name;

}

 

 

main函数

#include <QCoreApplication>
#include "reader.h"
#include "newspaper.h"


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Newspaper news("Today");
    Reader  re;

    void (Newspaper::*news_fun)(QString &) =  &Newspaper::name_to_reader;
    void (Reader::*recv_fun)(QString &) = &Reader::recv;

    QObject::connect(&news,news_fun,&re,recv_fun);

    news.newspaper_slot();

    return a.exec();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值