Qt5过载插槽错误

时间:2013-02-05 23:22:03

标签: qt

例如

class A : public QObject
{
Q_OBJECT

public:
    void f(int);
    void f();
};

A a;
QAction action(0);

connect(&action, &QAction::triggered, &a, &A::f); // error because 2 f functions.

除了重命名2个重载函数之外,如何克服它?感谢。

1 个答案:

答案 0 :(得分:4)

QT5仍然支持" old"使用完整原型连接的方式:

connect((&action, SIGNAL(triggered()), &a, SLOT(f(int));

connect((&action, SIGNAL(triggered()), &a, SLOT(f());

编辑:使用新的方式可以使用演员表(我自己没试过):

connect((&action, &QAction::triggered, &a, static_cast<void (A::*)(int)>(&A::f));