最近写通讯程序,遇到一问题。
代码如下
class Thread_1 : public QThread
{
Q_OBJECT
public:
Thread_1(QObject *parent = 0);
protected:
void run();
private:
QTcpSocket* m_tcpSocket;
};
Thread_1::Thread_1(QObject *parent)
: QThread(parent)
{
//m_tcpSocket = new QTcpSocket();
}
void Thread_1::run()
{
m_tcpSocket = new QTcpSocket();
m_tcpSocket->connectToHost(QHostAddress::LocalHost , 502);
exec();
}
如果m_tcpSocket在构造函数中声明就会报错
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTcpSocket(0x1a19fd0), parent's thread is QThread(0x1527688), current thread is Thread_1(0x26fc10)
如果在run()中声明可以正常运行。
另外C++ GUI QT4中所说,在次线程中使用QT的类,第一个约束条件就是QObject的子对象必须在他的父对象线程中创建这句话怎么理解?