//myThread.h
#ifndef MYTHREAD_H_
#define MYTHREAD_H_
#include <QtCore>
#include <QThread>
class myThread: public QThread {
public:
myThread();
~myThread();
public:
virtual void run();
signals:
void sigTest();
public slots:
void slotTest();
};
//myThread.cpp
#include "myThread.h"
myThread::myThread() {
connect(this, SIGNAL(sigTest()), this, SLOT(slotTest()));
}
myThread::~myThread() {
}
void myThread::run() {
emit sigTest();
}
void myThread::slotTest() {
}
//main.cpp
#include <QtCore>
#include <QApplication>
#include <QThread>
#include "myThread.h"
int main(int argc, char **argv) {
QApplication a(argc, argv);
myThread thread;
thread.start();
return a.exec();
}
我使用了上面三个文件测试一下QT的自定义信号,但是出现了如下问题:
1、error:myThread.cpp:17: undefined reference to `myThread::sigTest()'
2、如果在myThread.h里加上 Q_OBJECT,就会出现错误:
myThread.cpp:13: undefined reference to `vtable for myThread'
请问一下这种定义信号的方法对吗?应该如何定义?
第2个错误的原因是什么?