【发布时间】:2010-06-16 09:50:09
【问题描述】:
我正在开发一个将文件内容上传到服务器的应用程序。
要将文件上传到服务器,我使用的是“QNetworkAccessManager”类。由于它以异步方式工作,因此我使用 QEventLoop 将其更改为以同步方式工作。
Class FileTransfer
{
Public :
QNetworkAccessManager mNetworkManager;
Void Upload(QNetworkRequest request, QIODevice *data)
{
responce = mNetworkManager.put(request, data);
EventLoop.exec();
ReadResponce(responce);
}
Void Stop()
{
responce ->close();
}
}
在我的示例应用程序中,我有 2 个窗口。第一个选择文件,第二个显示进度。
当用户点击第一个窗口中的上传按钮时,将显示第二个窗口,然后我创建 FileTransfer 对象并开始上传。
在上传文件时,如果用户关闭表单,然后在窗口的析构函数中调用“FileTransfer”的停止,然后删除“FileTransfer”对象.
但是这里的 Upload() 函数还没有完成,所以它会崩溃。
请帮助我: 如何在 'stop()' 函数中等待直到 Upload() 函数完成
【问题讨论】:
标签: qt signals signals-slots qt-signals