0
点赞
收藏
分享

微信扫一扫

量化交易之QT篇 - 信号和槽、emit触发关键字


// TQZTeacher.h

#ifndef TQZTEACHER_H
#define TQZTEACHER_H

#include <QObject>

class TQZTeacher : public QObject
{
Q_OBJECT
public:
explicit TQZTeacher(QObject *parent = nullptr);

signals:
// 自定义信号都写在这下面;
// 且信号无返回值, 只需要声明不需实现;
// 可以有参数, 可以重载;
void hungry();

public slots:
};

#endif // TQZTEACHER_H

// TQZTeacher.cpp

#include "TQZTeacher.h"

TQZTeacher::TQZTeacher(QObject *parent) : QObject(parent)
{

}

// TQZStudent.h

#ifndef TQZSTUDENT_H
#define TQZSTUDENT_H

#include <QObject>

class TQZStudent : public QObject
{
Q_OBJECT
public:
explicit TQZStudent(QObject *parent = nullptr);

signals:

public slots:
void treat();
};

#endif // TQZSTUDENT_H

// TQZStudent.cpp

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


TQZStudent::TQZStudent(QObject *parent) : QObject(parent)
{

}

void TQZStudent::treat() {
qDebug() << __func__;
}

// widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "TQZStudent.h"
#include "TQZTeacher.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
Ui::Widget *ui;

TQZStudent *student;
TQZTeacher *teacher;

void classIsOver();
};

#endif // WIDGET_H

// widget.cpp

#include "widget.h"
#include "ui_widget.h"

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

this->teacher = new TQZTeacher(this);
this->student = new TQZStudent(this);

connect(this->teacher, &TQZTeacher::hungry, this->student, &TQZStudent::treat);

this->classIsOver();
}

void Widget::classIsOver() {
// 触发 this->teacher 的 hungry 方法;
emit this->teacher->hungry();

}

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

举报

相关推荐

0 条评论