我试图使用QT QNetworkAccessManager类来管理多线程C / QT应用程序中的一些下载.
在工作线程上(编辑:除了执行下载之外,线程是出于其他原因而分开),我想要访问外部服务器并准备好使用代码接收结果:
...
m_nam = new QNetworkAccessManager(this);
QNetworkReply *reply = m_nam->get(request);
connect(m_nam, SIGNAL(finished(QNetworkReply *)), this,
SIGNAL(finished(QNetworkReply *)));
...
但是在下载完成之前,我可能会决定我对结果不感兴趣.
所以我想设置一种通过发出信号do_abort()来断开与另一个线程的连接的方法.
这表明自己是:
connect(this, SIGNAL(do_abort()), reply, SLOT(abort()));
但我认为这不会起作用,因为abort不是QNetworkReply的插槽.
那么如何设置一种机制,我可以从另一个线程停止下载?我可以继承QNetworkReply并为该类提供适当的插槽.但我也想了解情况.
最佳答案 您不需要工作线程来使用QNetworkAccessManager.它是异步的,因此可以从主线程中使用它.
在QThread中,你实现了一个abortTheReply()槽,你可以在其中执行m_reply-> abort().然后将do_abort()信号连接到abortTheReply().