qt中的信号槽给出错误

时间:2014-04-08 06:25:40

标签: c++ qt

我写了一个简单的信号 - 插槽。其中i成员对象信号连接到类的槽。我收到错误

我已经给出了下面的代码...如果我在构造函数中保持连接,那么我也会收到错误。

#ifndef COUNTER_H
#define COUNTER_H
#include <QObject>
#include <QTextEdit>

class Counter : public QObject
{
    Q_OBJECT

public:
    Counter()
    {
        m_value = 0;
    }

    int value() const
    {
        return m_value;
    }

public slots:
    void setValue(int value);
    void callSetValue();

signals:
    void valueChanged(int newValue);

private:
    int m_value;
    QTextEdit m_text;
};

#endif // COUNTER_H

// counter.cpp

#include "counter.h"

void Counter::setValue(int value)
{
    QObject::connect (&m_text, SIGNAL(textChanged()), this, SLOT(callSetValue()));

    qDebug("setValue invoked");
    if (value != m_value)
    {
        m_value = value;
        m_text.setText("hai");
        emit valueChanged(value);
        qDebug("emited signal");
    }
}

void callSetValue()
{
    qDebug("callSetValue() invoked");
}

给我错误“未定义引用'Counter :: callSetValue()'

2 个答案:

答案 0 :(得分:5)

counter.cpp更改

的底部
void callSetValue()

void Counter::callSetValue()

答案 1 :(得分:0)

您尝试重新运行qmake吗?如果修改信号或插槽而不再运行qmake,则可能尚未生成信号代码。