我是Qt的新手,并尝试从Qt页面(http://doc.qt.io/qt-4.8/signalsandslots.html)编译一个示例,该示例实现了一个带有信号和插槽的简单类。在使用Qt Creator和qmake时,我都收到以下错误消息:
架构x86_64的未定义符号:
“Counter :: valueChanged(int)”,引自: main.o中的Counter :: setValue(int) _main in main.o“vtable for Counter”,引自: _main in main.o
有什么想法......?类似问题的答案涉及运行qmake,但正如我所说,在这种情况下会产生相同的错误。谢谢!
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
int main()
{
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)),
&b, SLOT(setValue(int)));
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
}