【问题标题】:How to create delegate function in QT如何在 QT 中创建委托函数
【发布时间】:2019-11-18 15:48:24
【问题描述】:

在 C# 中,我们像这样声明一个类的委托函数:

public delegate void MyClassDelegate(float num);

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

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

如何在 QT 上执行此操作或类似操作?

【问题讨论】:

  • 使用哪种语言? C++?蟒蛇?
  • @MartinHennings QT C++

标签: c++ delegates


【解决方案1】:

它与 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多