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