这是代码:
QEventLoop eventLoop;
QNetworkAccessManager mgr();
QObject::connect(mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QUrl url(site);
QNetworkRequest req(url);
QNetworkReply *reply = mgr.get(req);
eventLoop.exec();
if (reply->error() == QNetworkReply::NoError) {
cout << "Success" endl;
delete reply;
}
else {
cout << "Failure" endl;
delete reply;
}
错误发现:
. . request.cpp(17):错误C2665: 'QObject::Connect ': 3个重载都不能转换所有类型的主题
和
. . request.cpp(20):错误C2228:元素到左边。Get '必须是一个类、结构或联合
这叫做最烦人的解析,编译器认为mgr
是一个函数声明。要解决这个问题,只需更改
QNetworkAccessManager mgr();
QNetworkAccessManager mgr;
您的connect
也有一个错误,它应该看起来像这样(注意&
在mgr
之前,因为connect
需要指针):
QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
你有额外的括号。用途:
QNetworkAccessManager mgr;
QNetworkAccessManager
没有没有参数的构造函数,所以解析器将其理解为函数声明。你也可能在第二行得到警告,比如:
: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
QNetworkAccessManager mgr();
^~