如何在QT中创建委托函数

How to create delegate function in QT

本文关键字:函数 创建 QT      更新时间:2023-10-16

在c#中我们声明这样的类的委托函数:

public delegate void MyClassDelegate(float num);

然后我们可以在这样的其他功能上使用它:

public int SomeFunction(float num, MyClass.MyClassDelegate del);

我该如何执行此操作或在QT上进行类似的事情?

它与QT无关。为此使用std::function

void caller(int value, std::function<float(int)> delegate)
{
    qDebug() << delegate(value);
}
float divide(int value)
{
    return float(value) / 3;
}
int main(int argc, char *argv[])
{
    caller(7, divide);
    return 0;
}

如果您需要详细的内容(例如存储一个状态来创建代理函数等(,则还可以使用()运算符的对象:

struct MyDelegate
{
    float operator()(int value) { return float(value) / 3; }
};
float divide(int value)
{
    return float(value) / 3;
}
void caller(int value, MyDelegate& delegate)
{
    qDebug() << delegate(value);
}
int main(int argc, char *argv[])
{
    MyDelegate delegate;
    caller(7, delegate);
    return 0;
}