Qt中回调函数的实现
一、关于回调函数的介绍
这个关于回调函数的介绍可以查看知乎上关于回调函数的介绍通俗易懂
回调函数(callback)是什么.
上面的回答让我理解回调函数的还是[A 让 B 排序,B 会做排序,但排序需要知道哪个比哪个大,这点 B 自己不知道,就需要 A 告诉它。而判断大小本身是某种行为,既然 C 语言中不可以传进第一值的函数,就设计成传递第二值的函数指针,这个函数指针是 A 传向 B 的信息,用于描述判断大小这种行为。这里本来 A 调用 B 的,结果 B 又调用了 A 告诉它的信息,也就是 callback。]这句话,下面链接是关于全部的回答,具体可以点击链接查看
链接
二、回调函数使用的实列
1.调用回调函数的类
代码如下(示例):
//类的声明
#include <QMainWindow>
#include <QWidget>
typedef int(*lpFunc)(int,int); // 函数指针
class CallbackA : public QWidget
{
Q_OBJECT
public:
explicit CallbackA(QWidget *parent = nullptr);
void h_getstaic(lpFunc); //调用回调函数
};
//类的实现
#include <QDebug>
CallbackA::CallbackA(QWidget *parent) : QWidget(parent)
{
}
void CallbackA::h_getstaic(lpFunc a_lpFunc)
{
int i =a_lpFunc(5,6);
qDebug()<<"回调函数返回的数值"<<i;
}
2.回调函数实现
代码如下(示例):
//类的声明
#include "callbacka.h"
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
CallbackA m_CallbackA; //调用回调函数的类
// 声明一个回调函数
static int s_getPosition( int ,int);
};
//类的实现
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
m_CallbackA.h_getstaic(&s_getPosition);
}
Widget::~Widget()
{
}
int Widget::s_getPosition(int a, int b)
{
qDebug()<<"回调函数触发传入的数值是:"<<a<<b;
return a+b;
}
运行程序回看到程序打印的信息:
回调函数触发传入的数值是: 5 6
回调函数返回的数值 11
总结
这个关于回调函数的实列已经结束了,以上仅对自己学习回调函数做一个记录,如有错误之处,望大佬不吝赐教。
障碍与失败,是通往成功最稳靠的踏脚石,肯研究利用它们,便能从失败中培养出成功。