节目结束后网络回复
Network reply after program ends
我写了一个程序,从url获得网页的源代码,但我有问题,因为这个代码是在屏幕上打印时程序结束,我不能使用我下载的数据。我认为这个问题是因为程序等待SIGNAL(finished())。是否有任何方法处理下载的数据在我的程序结束之前?
void Get::getCode()
{
networkManager = new QNetworkAccessManager(this);
link = "http://example.com/";
networkManager->get(QNetworkRequest(QUrl(link)));
connect(networkManager, SIGNAL(finished(QNetworkReply*)), &process, SLOT(replyFinished(QNetworkReply*)));
//QDesktopServices::openUrl(QUrl(link));
}
…
void Process::replyFinished(QNetworkReply* pReply)
{
QString source(pReply->readAll());
printf("%sn", source.toStdString().c_str());
}
…
int main(int argc, char *argv[]){
QApplication a(argc, argv);
Get get; get.getCode();
MainWindow window;
printf("test pointn");
return a.exec();
//return 0;}
"test point"首先显示在屏幕上,然后是HTML代码。
网络管理器异步运行,这意味着主线程在调用get()方法后立即继续。
你可以通过设置一个等待下载完成的事件循环来解决这个问题:
QEventLoop loop;
connect(networkManager, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec(QEventLoop::ExcludeUserInputEvents);
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 通过网络、跨平台传递std::变体是否安全
- 如何在MNIST上提高网络运行的准确性
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 神经网络不学习.卡在50%
- 如何绑定 C++ gRPC 客户端的网络接口
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 在不知道套接字的情况下关闭网络连接
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 像 POCO 这样的C++图书馆如何访问网络?
- q网络回复 无状态码或错误,但失败
- 网络回复后Qt更新
- QT网络回复不会给我来自PHP脚本的结果
- 节目结束后网络回复