从阅读这个博客、这个博客和其他一些博客来看,子类化 QThread 是不好的做法。所以我尝试应用这种方法。
但我的问题是我想移动到另一个线程的类中有一个 QTimer 和一个 QTcpSocket 。突然之间,它并不像使用的示例那么容易。:(
QThread m_commsThread;
m_pICommsHandler = new CommsHandlerIP();
m_pICommsHandler->moveToThread(&m_commsThread);
m_commsThread.start();
这里是 CommsHandlerIP 类,方法不包括在内。
class CommsHandlerIP : public QObject
{
Q_OBJECT
public:
CommsHandlerIP();
~CommsHandlerIP(void);
protected:
QTcpSocket m_TCPSocket;
QTimer m_timer;
}
问题是即使您移动 CommsHandlerIP,QTimer 和 QTcpSocket(在 CommsHandlerIP 类中)也在主线程中。所以我无法启动计时器或连接套接字。
如果我尝试 moveToThread QTimer 和 QTcpSocket (例如,通过传递线程指针在构造函数内部),当我离开应用程序时,这会变得非常混乱。
我该怎么办?