При нажатии на кнопки на тулбаре выполняется слот 
void MainWindow::setConnection()
в котором создается объект потока thread.
C++ (Qt)
void MainWindow::setConnection()
{
    qDebug()<<__FUNCTION__;
    if(thread == NULL){
        thread = new Thread(&port_settings);
        connect(thread,SIGNAL(errorConnect(bool )),this,SLOT(errorConnect(bool))); //не работает
        thread->start();
 
    }
}
 
void MainWindow::errorConnect(bool err)
{
    qDebug()<<__FUNCTION__;
    qDebug()<<err;
 
    if(!err){
        actConnect->setDisabled(true);
        actDisConnect->setEnabled(true);
        actSettings->setDisabled(true);
        timerShow->start(500);
 
        leStatusPort->setText("Подключен");
        leNamePort->setText(port_settings.namePort);
        leBaudPort->setText(QString("%1").arg(port_settings.baudRate));
    }
    else{
        thread->quit();
        thread->wait();
        delete thread;
        thread = NULL;
 
        leStatusPort->setText("Отключен");
        leNamePort->setText(port_settings.namePort);
        leBaudPort->setText(QString("%1").arg(port_settings.baudRate));
    }
}
 
 
В нитке создается экземпляр класса TransportLevel, в котором создается экземпляр класса ChannelLevel.
C++ (Qt)
Thread::Thread(Port_Settings *port_settings,QObject *parent) :
    QThread(parent),
    settings(port_settings)
{
    moveToThread(this);
}
 
Thread::~Thread()
{
}
 
void Thread::run()
{    
    TransportLevel transport(settings);    
    connect(&transport,SIGNAL(errorConnect(bool )),this,SLOT(sl_errorConnect(bool ))); //не работает
    exec();
}
 
void Thread::sl_errorConnect(bool err)
{
    qDebug()<<"Thread "<<__FUNCTION__;
    emit errorConnect(err);
}
 
C++ (Qt)
TransportLevel::TransportLevel(Port_Settings *port_settings, QObject *parent) :
    QObject(parent),
    settings(port_settings)
{                
 
    channel = new ChannelLevel(settings,this);    
    connect(channel,SIGNAL(errorConnect(bool )),this,SLOT(sl_errorConnect(bool )));    
    qDebug()<<"transport channel level = "<<this->thread();
}
 
void TransportLevel::sl_errorConnect(bool err){
    qDebug()<<"TransportLevel"<<__FUNCTION__;
    emit errorConnect(err);
}
 
//========================================================================================
 
ChannelLevel::ChannelLevel(Port_Settings *port_settings,QObject *parent) :
    QObject(parent),
    settings(port_settings)
{
    err = true;    
    serialPort = new QSerialPort(this);
    openPort();
 
    qDebug()<<"thread channel level = "<<this->thread();
}
 
void ChannelLevel::openPort()
{
    qDebug()<<"settings->namePort = "<<settings->namePort;
 
    if(serialPort){
        serialPort->setPortName(settings->namePort);
        if(serialPort->open(QIODevice::ReadWrite)){
            if(serialPort->setBaudRate(settings->baudRate)
                    &&(serialPort->setDataBits(settings->dataBits))
                    &&(serialPort->setParity(settings->parity))
                    &&(serialPort->setStopBits(settings->stopBits))
                    &&(serialPort->setFlowControl(settings->flowControl)))
            {
                if(serialPort->isOpen()){
                    //QByteArray ba;
                    //ba.append(port_settings.namePort + " открыт");
                    //serialPort->write(ba);
 
                    setStrStatus(settings->namePort + " ???\n");
                    //statusString.clear();
                    //statusString = settings->namePort + " ???\n";
                    err = false;
                    qDebug()<<err;
                    emit errorConnect(err);
                    return;
 
                }else{
                    setStrStatus(serialPort->errorString());
                    //statusString.clear();
                    //statusString = serialPort->errorString();
                    err = true;
                    emit errorConnect(err);
                    return;
                }
            }else{
                serialPort->close();
 
                setStrStatus(serialPort->errorString());
                //statusString.clear();
                //statusString= serialPort->errorString();
                err = true;
                emit errorConnect(err);
                return;
            }
        }
    }
    //statusString.clear();
    //statusString = settings->namePort;
    setStrStatus(serialPort->errorString());
    emit errorConnect(true);
    return;
}
 
И к сожалению сигнало-слотовое соединение 
connect(&transport,SIGNAL(errorConnect(bool )),this,SLOT(sl_errorConnect(bool )));
в Thread не работает. Не могли бы пояснить почему так?