qt 传递函数指针示例
时间: 2024-09-18 17:07:01 浏览: 43
在Qt中,你可以通过将函数指针作为参数传递给信号槽(Slot)的方式来实现回调机制。以下是一个简单的例子:
```cpp
#include <QObject>
#include <QSignalMapper>
class Worker : public QObject {
public slots:
void processData(void(*)()) {
// 传入一个函数指针,这个函数将在worker线程中执行
connect(this, &Worker::dataProcessed, this, [func = funcToBeCalled]() {
func();
});
}
private:
void someFunctionToExecute() {
qDebug() << "Processing data...";
}
void dataProcessed() {
// 在这里处理数据完成后的操作
someFunctionToExecute(); // 调用传入的函数指针
}
};
void myCallbackFunction() {
qDebug() << "My callback function called!";
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Worker worker;
worker processData([]() { myCallbackFunction(); }); // 传递函数指针
return app.exec();
}
```
在这个例子中,`processData`方法接受一个函数指针并将其绑定到`dataProcessed`信号上。当`dataProcessed`信号触发时,会调用传递进来的函数。这里的`myCallbackFunction`就是一个可以被传递的例子。
阅读全文