如何在Qt connect中声明functor参数?

时间:2013-03-16 13:21:45

标签: qt

Qt可以使用函子参数as shown here在信号槽连接中使用lambda函数。但是如何在Qt connect中声明functor参数?例如,

QAction* CreateAction(QString text, QObject* parent, Functor functor)
{
    QAction* action = new QAction(icon, text, parent);
    QObject::connect(action, &QAction::triggered, functor);
    return action;
}

问题是如何包含文件让编译器知道“Functor”类型。

2 个答案:

答案 0 :(得分:1)

Functor不是真正的类型。它是Qt文档的占位符。实际类型是模板类型参数。如果您真的感兴趣,请查看QObject.h。实际上,您可以使用<functional>中定义的std::function

答案 1 :(得分:-1)

http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#connect-5

仿函数只是void *或无效指针。它可能需要是静态的。这看起来类似于常规回叫功能。

以下是文档中的示例:

void someFunction();
QPushButton *button = new QPushButton;
QObject::connect(button, &QPushButton::clicked, someFunction);