Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QNetworkAccessManager不发出信号_Qt_Qt4_Signals_Slot - Fatal编程技术网

Qt QNetworkAccessManager不发出信号

Qt QNetworkAccessManager不发出信号,qt,qt4,signals,slot,Qt,Qt4,Signals,Slot,调用函数CheckSite()时使用的url类似于,它初始化QNetworkAccessManager对象并连接()插槽和信号 manger->get()调用似乎可以工作(它会生成http流量),但不会在请求端调用slot replyFinished() 这个代码怎么了 #include <QtCore> #include <QtNetwork> class ClientHandler : public QObject { Q_OBJECT QNetworkAcce

调用函数CheckSite()时使用的url类似于,它初始化QNetworkAccessManager对象并连接()插槽和信号

manger->get()调用似乎可以工作(它会生成http流量),但不会在请求端调用slot replyFinished()

这个代码怎么了

#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));
}
#包括
#包括
类ClientHandler:公共QObject
{
Q_对象
QNetworkAccessManager*管理器;
专用插槽:
无效回复完成(QNetworkReply*);
公众:
无效检查站点(QString url);
};
void ClientHandler::replyFinished(QNetworkReply*reply){qDebug()get(QNetworkRequest(qrl));
}

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

// 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"
//放在client.cpp中
#包括
#包括
/*你的代码*/
int main(int argc,char*argv[])
{
QCore应用程序应用程序(argc、argv);
ClientHandler-handler;
handler.CheckSite(“www.google.com”);
返回app.exec();
}
#包括“client.moc”

它按预期输出“完成”。也许你正在检查的网站真的没有返回?也许它需要或正在生产?

关于这一点,您有什么代码?你是否在某处旋转事件循环?e、 g.qapp.exec()?

我应该在我的main()源文件中包含moc文件吗?
#include“client.moc”
只有在头文件中没有定义类时才有必要(并且您正在使用
qmake
作为构建工具)。因为我在client.cpp中有所有的东西,所以我需要它,这样所有的东西都能被正确地提取和链接。实际上不是。今晚,我尝试在代码中包含QCoreApplication和app.exec()(是一个控制台应用程序)。我添加了QCoreApplication应用程序(argc,argv);/*对象和方法调用*/return app.exec();在top main()函数中,但它没有修复任何问题。找到解决方案了吗?我也有同样的问题。不,我停止了这个项目的工作