2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【QT】回调函数的实现

【QT】回调函数的实现

时间:2023-04-25 17:36:18

相关推荐

【QT】回调函数的实现

回调函数是你写一个函数,让预先写好的系统来调用。你调用系统的函数,是直调。让系统调用你的函数,就是回调。

A 让 B 做事,根据粒度不同,可以理解成 A 函数调用 B 函数,或者 A 类使用 B 类,或者 A 组件使用 B 组件等等。反正就是 A 叫 B 做事。当 B 做这件事情的时候,自身的需要的信息不够,而 A 又有。就需要 A 从外面传进来,或者 B 做着做着再向外面申请。对于 B 来说,一种被动得到信息,一种是主动去得到信息。有些人给这两种方式一个术语,叫信息的压送( push),和信息的拉取( pull)。

1、callback.h

#ifndef CALLBACK_H#define CALLBACK_H/*A 让 B 排序,B 会做排序,但排序需要知道哪个比哪个大,* 这点 B 自己不知道,就需要 A 告诉它。而判断大小本身是某种行为,* 既然 C 语言中不可以传进第一值的函数,就设计成传递第二值的函数指针,* 这个函数指针是 A 传向 B 的信息,用于描述判断大小这种行为。* 这里本来 A 调用 B 的,结果 B 又调用了 A 告诉它的信息,也就是 callback*/#include <QWidget>typedef double(*cbFunc)(double,double);//函数指针class CallBack : public QWidget{Q_OBJECTpublic:explicit CallBack(QWidget *parent = nullptr);void m_getData(cbFunc); //调用回调函数signals:public slots:};#endif // CALLBACK_H

2、callback.cpp

#pragma execution_character_set("utf-8")#include "callback.h"#include <QDebug>CallBack::CallBack(QWidget *parent) : QWidget(parent){}void CallBack::m_getData(cbFunc m_cbFunc){double i = m_cbFunc(3.6,5.7);qDebug() << "回调函数返回的数值: " << i;}

3、widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include "callback.h"class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();CallBack m_callback;static double m_getPosition(double a, double b);};#endif // WIDGET_H

4、widget.cpp

#pragma execution_character_set("utf-8")#include "widget.h"#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent){//通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数 --回调m_callback.m_getData(&m_getPosition);}Widget::~Widget(){}double Widget::m_getPosition(double a, double b){qDebug() << "回调函数触发传入的数值是: " << a << b;return a+b;}

5、运行结果输出

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。