0

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

数据交换类:

#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

数据交换.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)

这个错误来自哪里以及如何解决?

4

1 回答 1

0

我已经上传了与你的类似的代码,但我没有问题:github.com/eyllanesc/stackoverflow/tree/master/Test – eyllanesc

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

然后它最终会起作用。

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

于 2017-04-07T16:17:12.193 回答