Делаю клиент-сервер. Изучаю работу Qthread и QTcp... .
В QT Асистенте нашел что QTcpSocket имеет сигнал stateChanged ( QAbstractSocket::SocketState ) унаследованный от QAbstractSocket. В соответствии с этим пишу:
C++ (Qt)
void FortuneThread::run()
{
QTcpSocket tcpSocket;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
return;
}
connect(&tcpSocket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),this,SLOT(stateChanged(QAbstractSocket::SocketState)));
qDebug() << "Server thread: starting";
this->exec();
}
void FortuneThread::stateChanged (QAbstractSocket::SocketState socketState) {
qDebug() << "Server thread: state changed";
}
При коннекте клиента в консоли появляется:
QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketState'
(Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)
Из описания я понял, что нужно использовать qRegisterMetaType для своих классов. И вызывать там где создаются экземпляры этого самого объекта.
Но ведь QAbstractSocket::SocketState QT-шная штука.....
Подозреваю, что я сделал что то не так. Поправьте.
Или где вставить qRegisterMetaType?
#include <QAbstractSocket> - имеется