在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)));
大体上就是这样。。。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步