• 6614阅读
  • 9回复

多线程中信号和slot问题 [复制链接]

上一主题 下一主题
离线kingnight
 
只看楼主 正序阅读 楼主  发表于: 2009-08-25
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
一个多线程程序

头文件
class CanReceive :public QOBject,public QThread
{
      Q_OBJECT
public:
QTimer *timer;
public slots:

   void TimerEvent();
}


cpp文件

CanReceive ::CanReceive
{
        timer=new QTimer ();
       connect(timer,SIGNAL(   timeout()   ),SLOT(   TimerEvent()     ));

}


CanReceive ::run
{

timer->start(200,false);

}

现在的问题是如果直接编译,会提示:undefined reference to `vtable for  CanReceive  
如果去掉Q_OBJECT,编译可以顺利通过,但是运行时会找不到slot函数
请教如何解决!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
离线galaxian
只看该作者 9楼 发表于: 2011-04-15
早期 qthread  public qt
离线kingnight
只看该作者 8楼 发表于: 2009-08-25
是不完整的,谢谢各位,我比较着急,呵呵,抱歉!
离线dbzhang800

只看该作者 7楼 发表于: 2009-08-25
我怀疑楼主贴的只是不完整的代码段,如果不是这样的话,问题就实在太多了
离线rqzrqh

只看该作者 6楼 发表于: 2009-08-25
第一次写QTread,好不容易写好的,只是调用了析构函数后无法退出程序,希望高手能帮忙指出
去掉public QOBject,,而且你重载了run()之前没有声明,编译器出现的问题应该就是这个导致的吧
附件: canreceive.tar.gz (8 K) 下载次数:8
离线20044454
只看该作者 5楼 发表于: 2009-08-25
LZ 不要说的那么绝对,至少我写的继承QThread 没有那句话 你QThread 就继承自public QOBject


LZ 这态度
[ 此帖被20044454在2009-08-25 15:30重新编辑 ]
让我做一个Qt的大牛!!!!
离线sbtree
只看该作者 4楼 发表于: 2009-08-25
公有槽void TimerEvent()没有实现
windows 7 + VC++2008 + Qt4.5.2
离线dbzhang800

只看该作者 3楼 发表于: 2009-08-25
你试过没? 为什么肯定地说 去掉肯定不对 呢?
离线kingnight
只看该作者 2楼 发表于: 2009-08-25
去掉肯定不对,会提示connect都不识别,管理员在吗,各位高手给点帮助呀!!!!!!!!!!
离线dbzhang800

只看该作者 1楼 发表于: 2009-08-25
class CanReceive :public QOBject,public QThread

把 public QOBject, 去掉试试看!
快速回复
限100 字节
 
上一个 下一个