• 5620阅读
  • 2回复

qt自定义信号的问题 [复制链接]

上一主题 下一主题
离线solu
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-15
//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个错误的原因是什么?
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-16
1. 添加 Q_OBJECT
2. 信号和槽取个不同名字
3. 修改后记得运行qmake
离线solu
只看该作者 2楼 发表于: 2009-12-16
引用第1楼dbzhang800于2009-12-16 08:34发表的  :
1. 添加 Q_OBJECT
2. 信号和槽取个不同名字
3. 修改后记得运行qmake



谢谢大牛,有机会请你吃饭!
快速回复
限100 字节
 
上一个 下一个