我有一个信号和一个插槽,应该很好地配合在一起。

class MemberVisitor: public QObject
{
    Q_OBJECT
signals:
    void processMember(Member* member, bool &breakLoop);
public:
    void processList(QList<Member*>* list);
};

随着:
class MemberFinder: public QObject
{
    Q_OBJECT
public slots:
    void processMember(Member* member, bool &breakLoop);
public:
    Member* member();
    MemberFinder(QString memID): m_member(0), m_memID(memID) {};
private:
    Member* m_member;
    QString m_memID;
};

不完全复杂,对吧?但是我肯定错过了一些东西,因为QT一直给我错误:“Object::connect:OperationsOnMembers.cpp:29中没有这样的信号MemberVisitor::processMember()”

这是应该将它们连接起来的代码:
QObject::connect(visitor, SIGNAL(processMember()), finder, SLOT(processMember()));

我还尝试了所有合理的选择,例如在finder上调用函数。但是我一直遇到同样的问题。我想念什么?

最佳答案

connect()的调用应为:

QObject::connect(visitor, SIGNAL(processMember(Member*, bool&)),
    finder, SLOT(processMember(Member*, bool&)));

..只要访客和发现者都是指针。

关于c++ - QT4中没有这样的信号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3604639/

10-11 16:37