in last question,i don't express my use-case clearly. now i describe my requirement.
in my client,i need to connect to Server with QTcpSocket.in most cases, i can write and read in gui thread(main thread). 
how ever,in some time-consuming tasks,i need a single worker thread to execute task. when i connect the server in gui thread,i keep the connection all the time.
if i use a new QTcpSocket in worker thread,must i disconnect the socket in gui thread? and connect to Server again?

```
class Widget:public QWidget
{
    Q_OBJECT
public:
    Widget()
    {
        socket = new QTcpSocket(this);
    }   
private:
    QHostAddress host;
    unsigned int port;
    QTcpSocket *socket;
private slots:  
    void startConnect()
    {
        socket->connectToHost(host,port);
    }
    void sendData()
    {
        //just send some bytes
        //socket->write();
    }
    void doTimeConsumingTask()
    {
        //must i disconnect gui->socket connection before the Worker is running?
        // socket->disconnectFromHost();
        Worker * w = new Worker();
        w->start();
    }
}

class Worker:public QThread
{
    Q_OBJECT
public:
    Worker()
    {

    }
protected:
    void run()
    {
        QTcpSocket socket;
        // must i connectToHost again here ? 

        // do something consuming time
        while(true){
            //
            QThread::msleep(10);

        }
    }
private:
    QHostAddress host;
    unsigned int port;
}

```