Http请求不阻塞ui操作

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

利用QEventLoop与QNetworkAccessManager实现网络请求不阻塞ui的操作。

使用场景

  • 当我们发送一个网络请求时,持续等待发送回来的数据,再进行下一步操作,但是期间ui不能阻塞的情况。

示例

  • QEventLoop类提供一种进入和退出事件循环的方法。
  • execquit分别为进入和退出事件循环。
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("http://www.qtbig.com"));
QNetworkReply* reply = manager.get(request);
QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec(); // 进入等待,但ui事件循环依然进行。

QByteArray result = reply->readAll();

猜你喜欢

转载自blog.csdn.net/nicai_xiaoqinxi/article/details/91412711