Есть базовый класс, отнаследованный от QThread, который общается с клиентом по TCP с помощью QTcpSocket. Пока я использовал только базовый класс - проблем не было, но когда сделал несколько классов-потомком начались проблемы. Перестал вызываться слот, соединенный с сигналом QThread::finished(). В базовом классе слот срабатывает, а вот в потомках - нет.
В базовом классе описываю
C++ (Qt)
protected slots:
virtual void onTcpConnected();
virtual void onThreadStop();
Далее в базовом классе
C++ (Qt)
void UnpProtocol::run()
{
connect(fSocket, SIGNAL(connected()),
this, SLOT(onTcpConnected()));
connect(fSocket, SIGNAL(disconnected()),
this, SLOT(onTcpDisconnected()));
connect(fSocket, SIGNAL(readyRead()),
this, SLOT(onTcpReadyRead()));
connect(fSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(onTcpError(QAbstractSocket::SocketError)));
connect(this, SIGNAL(finished()), SLOT(onThreadStop()));
unpConnect();
exec();
}
В потомке делаю так:
C++ (Qt)
protected slots:
void onTcpConnected();
void onTcpDisconnected();
void onThreadStop();
protected
void run();
сам код
C++ (Qt)
void UnpClientProtocol::run()
{
fSocket = new QTcpSocket(this);
UnpProtocol::run();
if (timerId)
killTimer(timerId);
}
void UnpClientProtocol::onTcpConnected()
{
UnpProtocol::onTcpConnected();
emit needRegistration();
}
void UnpClientProtocol::onThreadStop()
{
if (m_connected)
unpDisconnect();
}
Проблема в том, что слот UnpClientProtocol::onTcpConnected() прекрасно срабатывает, а вот UnpClientProtocol::onThreadStop() - нет. Никак не могу разобраться, в чем дело