2017-04-06 165 views
0

我试图建立一个属性,使得变量的值是改变功能将被调用:QT Q_PROPERTY错误:接头命令,退出代码1(使用-v看调用)失败

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

哪里从何而来此错误,以及如何解决呢?

+0

您是否实现了构造函数和析构函数? – eyllanesc

+0

@ eyllanesc是的,补充。 –

+0

信号未实现,请删除:void DataExchange :: serialOnChanged(bool value) qDebug()<< value; }' – eyllanesc

回答

0

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

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

然后它终于可以工作了。

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

相关问题