Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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:QNetworkRequest accoumplish后如何发出QNetworkReply插槽?_Qt_Visual Studio 2010_Qt4.8 - Fatal编程技术网

Qt:QNetworkRequest accoumplish后如何发出QNetworkReply插槽?

Qt:QNetworkRequest accoumplish后如何发出QNetworkReply插槽?,qt,visual-studio-2010,qt4.8,Qt,Visual Studio 2010,Qt4.8,我正在尝试使用多个线程从云请求数据。我的问题是在QnetworkReply完成replyFinished(QnetworkReply*)之后,插槽从未发出。我该怎么做 pc\u gateway.h //Main class #include "dhvac_datacollector_thread.h" class PC_Gateway : public QMainWindow { Q_OBJECT DHVAC_DataCollector_Thread *m_DHVAC_Da

我正在尝试使用多个线程从云请求数据。我的问题是在QnetworkReply完成replyFinished(QnetworkReply*)之后,插槽从未发出。我该怎么做

pc\u gateway.h

//Main class 
#include "dhvac_datacollector_thread.h"

class PC_Gateway : public QMainWindow
{
   Q_OBJECT 

    DHVAC_DataCollector_Thread *m_DHVAC_DataCollector_Thread[70]; 

    PC_Gateway(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~PC_Gateway();

   public slots:
      void slot_start_comm(); 
};
//Thread class
class DHVAC_DataCollector_Thread : public QThread
{
    Q_OBJECT

    public:
      DHVAC_DataCollector_Thread(QObject *parent);
      ~DHVAC_DataCollector_Thread();

      void run();
      void Stop();

    public slots:
       void replyFinished(QNetworkReply*);
};
pc\u网关.cpp

#include "pc_gateway.h"

PC_Gateway::PC_Gateway(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{

}

PC_Gateway::~PC_Gateway()
{

}

void PC_Gateway::slot_start_comm()
{
    int nNumOfThreads = 4;

    for(int i=0; i<nNumOfThreads ; i++)
    {
       this->m_DHVAC_DataCollector_Thread[i] = new DHVAC_DataCollector_Thread(this);
       this->m_DHVAC_DataCollector_Thread[i]->start();
    } 
}
#include "dhvac_datacollector_thread.h"

DHVAC_DataCollector_Thread::DHVAC_DataCollector_Thread(QObject *parent)
: QThread(parent)
{

}

DHVAC_DataCollector_Thread::~DHVAC_DataCollector_Thread()
{
}

void DHVAC_DataCollector_Thread::run()
{
    while(true)
    {
        QString sUrl = "https://api.uno.taww.com/api/v2/data/sensor/"+sNodeId+"/10m/_";  
        QUrl url(sUrl);
        bool bUrl = url.isValid(); 

        if(!bUrl) //If URL is invalid
         return false;

        QNetworkRequest request;    
        request.setUrl(url);    
        request.setRawHeader("api_token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9");
        request.setRawHeader("user_id","102473df5c9106e55d");
        request.setRawHeader("cache-control","no-cache");

       QNetworkAccessManager *manager = new QNetworkAccessManager();
       connect(manager, SIGNAL(finished(QNetworkReply*)),this,
               SLOT(replyFinished(QNetworkReply*)));
       QNetworkReply *reply = manager->get(request);
    }
}

void DHVAC_DataCollector_Thread::replyFinished(QNetworkReply *reply)  
{
  QByteArray responseData;
  if(reply->error() == QNetworkReply::NoError)
  {
    responseData = reply->readAll();
    QString sData (responseData);
    reply->close();
    reply->deleteLater();
    qDebug()<<"Raw data:" <<sData;  

  }
}
DHVAC_DataCollector_Thread.cpp

#include "pc_gateway.h"

PC_Gateway::PC_Gateway(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{

}

PC_Gateway::~PC_Gateway()
{

}

void PC_Gateway::slot_start_comm()
{
    int nNumOfThreads = 4;

    for(int i=0; i<nNumOfThreads ; i++)
    {
       this->m_DHVAC_DataCollector_Thread[i] = new DHVAC_DataCollector_Thread(this);
       this->m_DHVAC_DataCollector_Thread[i]->start();
    } 
}
#include "dhvac_datacollector_thread.h"

DHVAC_DataCollector_Thread::DHVAC_DataCollector_Thread(QObject *parent)
: QThread(parent)
{

}

DHVAC_DataCollector_Thread::~DHVAC_DataCollector_Thread()
{
}

void DHVAC_DataCollector_Thread::run()
{
    while(true)
    {
        QString sUrl = "https://api.uno.taww.com/api/v2/data/sensor/"+sNodeId+"/10m/_";  
        QUrl url(sUrl);
        bool bUrl = url.isValid(); 

        if(!bUrl) //If URL is invalid
         return false;

        QNetworkRequest request;    
        request.setUrl(url);    
        request.setRawHeader("api_token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9");
        request.setRawHeader("user_id","102473df5c9106e55d");
        request.setRawHeader("cache-control","no-cache");

       QNetworkAccessManager *manager = new QNetworkAccessManager();
       connect(manager, SIGNAL(finished(QNetworkReply*)),this,
               SLOT(replyFinished(QNetworkReply*)));
       QNetworkReply *reply = manager->get(request);
    }
}

void DHVAC_DataCollector_Thread::replyFinished(QNetworkReply *reply)  
{
  QByteArray responseData;
  if(reply->error() == QNetworkReply::NoError)
  {
    responseData = reply->readAll();
    QString sData (responseData);
    reply->close();
    reply->deleteLater();
    qDebug()<<"Raw data:" <<sData;  

  }
}
#包括“dhvac_datacollector_thread.h”
DHVAC_DataCollector_线程::DHVAC_DataCollector_线程(QObject*父)
:QThread(父线程)
{
}
DHVAC_DataCollector_线程::~DHVAC_DataCollector_线程()
{
}
void DHVAC_数据收集器_线程::run()
{
while(true)
{
QString sUrl=”https://api.uno.taww.com/api/v2/data/sensor/“+sNodeId+”/10m/3;”;
QUrl(sUrl);
bool-bUrl=url.isValid();
if(!bUrl)//如果URL无效
返回false;
QNetworkRequest请求;
setUrl(url);
请求.setRawHeader(“api_令牌”,“eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9”);
请求.setRawHeader(“用户id”,“102473df5c9106e55d”);
setRawHeader(“缓存控制”、“无缓存”);
QNetworkAccessManager*manager=新的QNetworkAccessManager();
连接(管理器,信号(完成(QNetworkReply*)),此,
插槽(replyFinished(QNetworkReply*));
QNetworkReply*reply=manager->get(请求);
}
}
void DHVAC_DataCollector_线程::replyFinished(QNetworkReply*reply)
{
QByteArray响应数据;
如果(回复->错误()==QNetworkReply::NoError)
{
responseData=reply->readAll();
QString sData(响应数据);
回复->关闭();
回复->删除稍后();

qDebug()您可以在收到回复后,在
replyFinished
插槽中尝试发送请求,而不是在循环中。只需执行一个请求,如果
replyFinished
工作正常,则执行第二个请求

void DHVAC_DataCollector_Thread::replyFinished(QNetworkReply *reply)  
{
    QByteArray responseData;
    if(reply->error() == QNetworkReply::NoError)
    {
        responseData = reply->readAll();
        QString sData (responseData);
        reply->close();
        reply->deleteLater();
        qDebug()<<"Raw data:" <<sData;  
    }
    // nextRequest()
}
void DHVAC_DataCollector_Thread::replyFinished(QNetworkReply*reply)
{
QByteArray响应数据;
如果(回复->错误()==QNetworkReply::NoError)
{
responseData=reply->readAll();
QString sData(响应数据);
回复->关闭();
回复->删除稍后();
qDebug()