Pregunta

Estoy intentando usar la clase QT QNETWorkAccessManager para administrar algunas descargas en una aplicación C ++/QT de múltiples subprocesos.

En trabajador hilo (Editar: el hilo es separado por otras razones, aparte de hacer la descarga), me gustaría hacer un servidor externo y estar listo para recibir los resultados con el código:

...
m_nam = new QNetworkAccessManager(this);
QNetworkReply *reply = m_nam->get(request);
connect(m_nam, SIGNAL(finished(QNetworkReply *)), this, 
        SIGNAL(finished(QNetworkReply *)));
...

Pero podría decidir, antes de que termine la descarga, que no estoy interesado en el resultado.

Así que me gustaría configurar una forma de desconectar la conexión de otro hilo emitiendo una señal do_abort ().

Lo que se sugiere a sí mismo es:

connect(this, SIGNAL(do_abort()), reply, SLOT(abort()));

Pero no creo que eso funcione porque Abort no es una ranura de QNETWorkReply.

Entonces, ¿cómo puedo establecer un mecanismo en el que pueda detener esta descarga de otro hilo? Podría subclase QNETWorkReply y darle a esa clase la ranura apropiada. Pero también me gustaría entender la situación.

¿Fue útil?

Solución

No necesita un hilo de trabajadores para usar QnetWorkAccessManager. Es asíncrono, por lo que está bien usarlo desde su hilo principal.

En el QThread implementa una ranura abortera () y en el interior que realiza m_reply-> abort (). Luego conectas tu señal do_abort () al abortherePly ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top