在QT中使用静态对象

最近做教研室的项目,需要只能存在一个接收数据的线程,那么我就想把这个线程设置成一个静态对象。但是在connect信号与槽的时候出了一点问题,最后搞好了,现在这mark一下:

比如说一个声明了一个静态的thread以及一个成员Thread的话:

 1 class A{
 2 private:
 3     Thread1 * soSthThread;
 4     static Thread2  * recvThread;
 5 };
 6 
 7 class Thread2 : public QThread{
 8 signals:
 9     void recvFrame(unsigned int );
10 };
11 
12 class Thread1 : public QThread{
13 public slots:
14     void getFrame(unsigned int);
15 };

那么初始化就应该使用这种方式:

1 Thread2 * A::recvThread(new Thread2());//注意这里不可以加上static,编译器已经知道这个Thread是static的了,无需再次声明

在A的构造函数中Thread1与Thread2之间的槽连接应该采用下面这种方式:

1 connect(A::recvThread, SIGNAL(recvFrame(unsigned int)), this, SLOT(getFrame(unsigned int)));

大体上就是这样。。。

posted @ 2015-11-11 16:10  eversliver  阅读(1509)  评论(0编辑  收藏  举报