Russian Qt Forum

Qt => Общие вопросы => Тема начата: a1ien от Июнь 08, 2012, 01:20



Название: Свой класс наследованный от QTcpSocket
Отправлено: a1ien от Июнь 08, 2012, 01:20
Есть такой код.
Код
C++ (Qt)
QTcpSocket *socket = proxyServer->nextPendingConnection();
connect(socket, SIGNAL(readyRead()), this, SLOT(processQuery()));
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
Создаю свой класс наследованный от QTcpSocke
Код
C++ (Qt)
class Http : public QTcpSocket
{
   Q_OBJECT
public:
   explicit Http(QObject *parent = 0);
signals:
 
public slots:
 
};
 
Переделываю первый код на.
Код
C++ (Qt)
Http *socket =new Http(proxyServer->nextPendingConnection());
connect(socket, SIGNAL(readyRead()), this, SLOT(processQuery()));
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
Теперь сигналы-слоты не работают. В общих чертах я представляю почему, но как сделать чтобы работало?))


Название: Re: Свой класс наследованный от QTcpSocket
Отправлено: IMPOMEZIA от Июнь 08, 2012, 03:01
Нужно переопределить:
Код:
void QTcpServer::incomingConnection ( int socketDescriptor )
В нём создать ваш сокет Http и установить ему дескриптор с помощью
Код:
bool QTcpServer::setSocketDescriptor ( int socketDescriptor )

В вашем кода создаётся 2 QTcpSocket, 1 ваш и 1 от QTcpServer который передаётся ему в конструктор в качестве родителя.