【发布时间】:2013-10-15 15:58:29
【问题描述】:
从阅读blog、blog 和其他一些内容来看,子类化 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;
}
问题是 QTimer 和 QTcpSocket(在 CommsHandlerIP 类中)在主线程中,即使你移动了 CommsHandlerIP。所以我无法启动计时器或连接套接字。
如果我尝试将 QTimer 和 QTcpSocket 移动到线程(例如在构造函数中通过传递线程指针),当我离开应用程序时,这会变得非常混乱。
我该怎么办?
【问题讨论】:
标签: c++ multithreading qt qthread