Qt使い始めました。
どうして以下のコードは期待している動作をしないのでしょう?

-- counter.h ---
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
private:
int m_value;
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
};

--- counter.cpp ---
#include "counter.h"
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}