【发布时间】:2014-08-09 15:07:13
【问题描述】:
我编写了从 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("%s\n", source.toStdString().c_str());
}
...
int main(int argc, char *argv[]){
QApplication a(argc, argv);
Get get; get.getCode();
MainWindow window;
printf("test point\n");
return a.exec();
//return 0;}
“测试点”首先出现在屏幕上,然后是 html 代码。
【问题讨论】:
-
您可以将其写入文件吗?
-
我想在同一个程序中使用这个代码并且不需要写入文件,足够我在 QString 源中写入数据,但是我不能在程序中使用这个变量,因为它在程序结束时获取数据。
标签: c++ qt qnetworkaccessmanager slot