2017-04-06 6 views
0

Iは、変数の値が呼び出される関数を変更しているようにプロパティを設定しようとした終了コード1(呼び出しを参照する-v使用)で失敗しました。クラス:QT Q_PROPERTYエラー:</p> <p>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(ブール値) { 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 - >を実行する必要があります...

それは最終的に動作します。

以前は私はプロジェクトとリビルトプロジェクトをきれいにしましたが、何とか問題を解決しませんでした。

関連する問題