QFunctionPointer函数指针示例
时间: 2024-09-24 09:04:40 浏览: 32
QFunctionPointer是Qt库中的一个功能,它是一个指向函数的指针,常用于回调机制和动态链接。在C++中,你可以使用它来存储和调用预先声明但未初始化的函数地址。下面是一个简单的例子:
```cpp
#include <QObject>
#include <QMetaObject>
// 声明一个函数模板作为回调示例
template<typename T>
void myCallback(T arg) {
qDebug() << "Callback received: " << arg;
}
class MyClass : public QObject {
public:
// 定义QFunctionPointer来指向myCallback
QFunctionPointer<void(const QString&)> callback;
void setCallback() {
// 设置回调函数
callback = &myCallback<QString>;
}
// 使用QMetaObject来动态地设置回调
void bindToSignal(QObject* obj, const char* signalName) {
connect(obj, SIGNAL(signalName(QString)), this, SLOT(callbackSlot()));
}
private slots:
void callbackSlot() {
QString arg = qobject_cast<QObject*>(sender())->property("arg").toString();
callback(arg);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyClass instance;
instance.setCallback(); // 设置回调函数
// ...其他代码
return app.exec();
}
```
在这个例子中,`callback`是一个`QFunctionPointer`,我们首先将其设置为`myCallback<QString>`的地址。然后,通过`connect()`函数将信号与槽(slot)关联起来,当接收到特定信号时,会调用`callbackSlot()`,进而执行`callback`所指向的实际函数。
阅读全文