QT Q_PROPERTY错误:链接器命令失败,退出代码为1(使用-v查看调用)

时间:2017-04-06 20:50:28

标签: c++ qt qproperty

我尝试设置一个属性,以便变量的值更改,将调用一个函数:

DataExchange类:

#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)

此错误来自何处以及如何解决?

1 个答案:

答案 0 :(得分:0)

  

我上传了与您类似的代码,但我没有遇到任何问题:github.com/eyllanesc/stackoverflow/tree/master/Test - eyllanesc

这是一个很好的例子。但在做出更改后,需要:清理项目 - &gt;运行qmake - &gt; ...

然后它最终会起作用。

以前我只清理了项目并重建了项目,这在某种程度上没有解决问题。