2017-04-06 13 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 - > ...

然後它終於可以工作了。

此前,我只清理項目和重建項目,這在某種程度上沒有解決問題。

相關問題