Http请求不阻塞ui操作

2019-07-15 16:33:00 浏览数 (2)

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

使用场景

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

示例

  • QEventLoop类提供一种进入和退出事件循环的方法。
  • execquit分别为进入和退出事件循环。
代码语言:javascript复制
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();

0 人点赞