在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)));
大体上就是这样。。。