QT Q_PROPERTY error: linker command failed with exit code 1 (use -v to see invocation)

QT Q_PROPERTY error: linker command failed with exit code 1 (use -v to see invocation)

我试图设置一个 属性 以便变量的值发生变化时将调用一个函数:

DataExchange class:

#ifndef DATAEXCHANGE_H
#define DATAEXCHANGE_H

#include <QObject>
#include <QDebug>

class DataExchange : public QObject
{
    Q_OBJECT
    Q_PROPERTY(bool serialOn READ get_serialOn WRITE set_serialOn NOTIFY serialOnChanged)
public:
    DataExchange(QObject *parent = 0);
    ~DataExchange();

    bool get_serialOn() const
    {
        return _serialOn;
    }

    void set_serialOn(bool value)
    {
        if (value != _serialOn)
        {
            _serialOn = value;
            emit serialOnChanged(_serialOn);
        }
    }


signals:
    void serialOnChanged(bool);
private:
    bool _serialOn;

};

#endif // DATAEXCHANGE_H

DataExchange.cpp

DataExchange::DataExchange(QObject *parent) :
    QObject(parent)
{}
DataExchange::~DataExchange() { }

主机:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    ...
    DataExchange *deHandle;
};

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    removeToolBar(ui->mainToolBar);
    deHandle = new DataExchange;
}

但是报错:

error: linker command failed with exit code 1 (use -v to see invocation)

这个错误从何而来,如何解决?

I have uploaded the code that is similar to yours but I have no problems: github.com/eyllanesc/Whosebug/tree/master/Test – eyllanesc

这个就是一个很好的例子。但是修改之后,需要:clean project -> 运行 qmake -> ...

那么终于可以了

之前我只是清理项目和重建项目,但不知何故并没有解决问题。