QT Q_PROPERTY error: linker command failed with exit code 1 (use -v to see invocation)
QT Q_PROPERTY error: linker command failed with exit code 1 (use -v to see invocation)
我试图设置一个 属性 以便变量的值发生变化时将调用一个函数:
DataExchange class:
#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)
这个错误从何而来,如何解决?
I have uploaded the code that is similar to yours but I have no problems: github.com/eyllanesc/Whosebug/tree/master/Test – eyllanesc
这个就是一个很好的例子。但是修改之后,需要:clean project -> 运行 qmake -> ...
那么终于可以了
之前我只是清理项目和重建项目,但不知何故并没有解决问题。
我试图设置一个 属性 以便变量的值发生变化时将调用一个函数:
DataExchange class:
#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)
这个错误从何而来,如何解决?
I have uploaded the code that is similar to yours but I have no problems: github.com/eyllanesc/Whosebug/tree/master/Test – eyllanesc
这个就是一个很好的例子。但是修改之后,需要:clean project -> 运行 qmake -> ...
那么终于可以了
之前我只是清理项目和重建项目,但不知何故并没有解决问题。