Итак, у меня есть интересная проблема ... программа, которую я (пытаюсь) написать, терпит крах с этой ошибкой:
QObject::startTimer: QTimer can only be used with threads started with QThread
Единственное, что сбивает меня с толку, - это моя программа однопоточная.Цель рассматриваемого класса - отправить данные POST на страницу php, которую я имею на своем сервере.Как только он пытается отправить сообщение POST, я получаю это сообщение.Вот мой код.
#ifndef TRANSMISSIONS_H
#define TRANSMISSIONS_H
#include "name_spawn.h"
#include <QNetworkReply>
#include <QObject>
#include <QNetworkConfigurationManager>
class Transmissions : public QObject
{
Q_OBJECT
public:
Transmissions();
void Send(GeneratedData);
public slots:
void serviceRequestFinished(QNetworkReply*);
signals:
void configurationAdded(const QNetworkConfiguration);
void configurationChanged(const QNetworkConfiguration);
void configurationRemoved(const QNetworkConfiguration);
void onlineStateChanged(bool);
void updateCompleted();
};
#endif // TRANSMISSIONS_H
И
#include "transmissions.h"
#include "name_spawn.h"
#include <QHttp>
#include <QUrl>
#include <QString>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <iostream>
#include <QNetworkAccessManager>
#include <QNetworkConfigurationManager>
#include <QObject>
using namespace std;
Transmissions::Transmissions()
{
}
void Transmissions::Send(GeneratedData User)
{
cerr<<"transmitting"<<endl;
QUrl serviceUrl = QUrl("http://192.168.1.138/postTest.php");
QByteArray postData;
QString username="user="+User.Email()+"&";
QString Passwd="password="+User.pass();
postData.append(username);
postData.append(Passwd);
QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(serviceRequestFinished(QNetworkReply*)));
networkManager->post(QNetworkRequest(serviceUrl), postData);
}
void Transmissions::serviceRequestFinished(QNetworkReply *reply)
{
//this will do other things once post is working
QString data = reply->readAll();
cerr <<"Data is "<< data.toStdString()<<endl;
}
Я думаю, то, что я пытаюсь сделать, довольно просто, но это безрезультатно для меня, пытаясь заставить его работать,Я не видел ничего в документации о QNetworkAccessManager, требующей потоков.Я признаю, что не очень хорошо знаю Qt, поэтому любая помощь (или ссылки на полные примеры POST) была бы очень признательна.