Qt 写回调函数,请给一个示例
时间: 2024-04-21 15:23:30 浏览: 136
在 Qt 中,可以使用信号和槽机制来实现回函数的功能。下面是一个示例:
```cpp
#include <QObject>
#include <QDebug>
// 定义回调函数接口
class CallbackInterface : public QObject
{
Q_OBJECT
public:
virtual void onCallback() = 0;
};
// 实现回调函数接口的具体类
class CallbackClass : public CallbackInterface
{
public:
void onCallback() override
{
qDebug() << "Callback triggered!";
}
};
// 使用回调函数的类
class CallbackUser : public QObject
{
Q_OBJECT
public:
CallbackUser(CallbackInterface* callback, QObject* parent = nullptr)
: QObject(parent), m_callback(callback)
{
}
public slots:
void doSomething()
{
// 执行某些操作后触发回调函数
// ...
// 调用回调函数
m_callback->onCallback();
}
private:
CallbackInterface* m_callback;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建回调函数对象和使用回调函数的对象
CallbackClass callbackObject;
CallbackUser callbackUser(&callbackObject);
// 连接信号和槽
QObject::connect(&callbackUser, &CallbackUser::doSomething, &callbackUser, &CallbackUser::doSomething);
// 调用触发回调函数的操作
callbackUser.doSomething();
return app.exec();
}
```
在上述示例中,我们首先定义了一个 `CallbackInterface` 类,它是一个纯虚类,其中只有一个纯虚函数 `onCallback()`。然后,我们创建了一个实现了 `CallbackInterface` 的具体类 `CallbackClass`,其中实现了 `onCallback()` 函数。接下来,我们创建了一个使用回调函数的类 `CallbackUser`,它接受一个 `CallbackInterface` 类型的指针作为构造参数,并在 `doSomething()` 槽函数中触发回调函数。最后,我们在 `main()` 函数中创建了回调函数对象和使用回调函数的对象,并通过连接信号和槽的方式实现了回调函数的调用。
希望对你有帮助!如果还有其他问题,请随时提问。
阅读全文