首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QNetworkAccessManager不发出信号

Qt QNetworkAccessManager不发出信号
EN

Stack Overflow用户
提问于 2010-05-06 04:44:34
回答 2查看 2K关注 0票数 5

函数CheckSite()是通过类似http://example.com的url调用的,它初始化一个QNetworkAccessManager对象并连接()插槽和信号。

manger->get()调用似乎是有效的(它生成http流量),但是在请求端不调用槽replyFinished()。

这段代码有什么问题?

代码语言:javascript
复制
#include <QtCore>
#include <QtNetwork>

class ClientHandler : public QObject
{
Q_OBJECT
  QNetworkAccessManager *manager;
private slots:
  void replyFinished(QNetworkReply *);
public:
  void CheckSite(QString url);
};

void ClientHandler::replyFinished(QNetworkReply *reply) { qDebug() << "DONE"; }

void ClientHandler::CheckSite(QString url) {
  QUrl qrl(url);
  manager = new QNetworkAccessManager(this);
  connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
  manager->get(QNetworkRequest(qrl));
}
EN

回答 2

Stack Overflow用户

发布于 2010-05-06 05:09:53

没什么。我对它进行了包装,使其功能齐全,运行良好:

代码语言:javascript
复制
// placed in client.cpp
#include <QtDebug>
#include <QCoreApplication>

/* YOUR CODE */

int main(int argc, char *argv[])
{
        QCoreApplication app(argc, argv);
        ClientHandler handler;
        handler.CheckSite("www.google.com");
        return app.exec();

}

#include "client.moc"

它会按照预期输出"DONE“。也许你正在检查的网站真的没有返回?也许它需要authentication或正在生产ssl errors

票数 1
EN

Stack Overflow用户

发布于 2010-05-06 15:34:07

你有什么代码来解决这个问题?你会在某个地方旋转一个事件循环吗?例如qapp.exec()?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2776640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档