Qt实现回调函数的代码示例
时间: 2023-08-15 11:11:49 浏览: 253
下面是一个简单的示例代码,演示了如何在Qt中实现回调函数:
```cpp
#include <QCoreApplication>
#include <QDebug>
class CallbackClass : public QObject
{
Q_OBJECT
public:
explicit CallbackClass(QObject *parent = nullptr) : QObject(parent) {}
public slots:
void callbackFunction(int value)
{
qDebug() << "Callback received value:" << value;
}
};
class CallerClass : public QObject
{
Q_OBJECT
public:
explicit CallerClass(QObject *parent = nullptr) : QObject(parent) {}
void doSomething()
{
// 假设这里触发了某个事件或条件满足时调用回调函数
int value = 42;
// 发射信号,并将参数传递给回调函数
emit callbackSignal(value);
}
signals:
void callbackSignal(int value);
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
CallerClass caller;
CallbackClass callback;
// 连接信号和槽
QObject::connect(&caller, &CallerClass::callbackSignal, &callback, &CallbackClass::callbackFunction);
// 调用CallerClass的函数,会触发回调函数被调用
caller.doSomething();
return a.exec();
}
#include "main.moc"
```
在这个示例中,我们创建了两个类:`CallerClass`和`CallbackClass`。`CallerClass`负责执行某个操作,并在需要时触发回调函数。`CallbackClass`是回调函数所在的类。
在`CallerClass`中,我们定义了一个信号`callbackSignal`,它带有一个整数参数。当某个事件发生或条件满足时,我们发射这个信号,并传递一个整数值给回调函数。
在`CallbackClass`中,我们定义了一个槽函数`callbackFunction`,它接收一个整数参数。当信号被发射时,这个槽函数将被调用,并打印接收到的整数值。
在`main`函数中,我们创建了`CallerClass`和`CallbackClass`的实例,并使用`QObject::connect`函数将信号和槽连接起来。然后,我们调用`CallerClass`的`doSomething`函数,这会触发回调函数被调用。
这只是一个简单的示例,你可以根据实际需求进行修改和扩展。希望对你有所帮助!
阅读全文