2011-09-16 18 views
0

QTを使用してPOSTデータをPHPページに送信しようとしています。私のコードは次の通りです:QtはPOSTデータを送信しません

#include <QHttp> 
#include <QUrl> 
#include <QString> 
#include <QNetworkReply> 
#include <QNetworkRequest> 
#include <iostream> 
#include <QNetworkAccessManager> 
#include <QObject> 
.... 
void Transmissions::Send() 
{ 
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); 
QObject::connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(serviceRequestFinished(QNetworkReply*))); 
networkManager->post(QNetworkRequest(serviceUrl), postData); 
} 
.... 
void serviceRequestFinished(QNetworkReply *reply) 
{ 
QString data = reply->readAll(); 
    cerr << data.toStdString()<<endl; 

} 

今、このコードはコンパイルされません。

error: no matching function for call to ‘QNetworkAccessManager::QNetworkAccessManager(Transmissions* const)’ 

error: no matching function for call to ‘QObject::connect(QNetworkAccessManager*&, const char*, Transmissions* const, const char*)’ 

How can I POST data to a url using QNetworkAccessManager、私は右のすべてをやっている、ここでQTドキュメントhttp://doc.qt.io/qt-5/qnetworkaccessmanager.html本によると:これらはエラーです。私はQT Docsサイトのコードをコピー&ペーストしても同じエラーが発生することがあります。私はここで何が欠けていますか?

EDIT 私はここにHow to send data back from PHP after a HTTP Post in Qt? を示すPOSTメソッドをしようとした場合、私はこれを取得:

QObject::connect: Cannot connect (null)::configurationAdded(QNetworkConfiguration) to QNetworkConfigurationManager::configurationAdded(QNetworkConfiguration) 

誰かが

EDIT2を助けてください。私のコードをVitaminPする おかげで、今コンパイルします。しかし、今、この問題が起こっている:

QObject::connect: Cannot connect (null)::configurationAdded(QNetworkConfiguration) to QNetworkConfigurationManager::configurationAdded(QNetworkConfiguration) 
QObject::connect: Cannot connect (null)::configurationRemoved(QNetworkConfiguration) to QNetworkConfigurationManager::configurationRemoved(QNetworkConfiguration) 
QObject::connect: Cannot connect (null)::configurationUpdateComplete() to QNetworkConfigurationManager::updateCompleted() 
QObject::connect: Cannot connect (null)::onlineStateChanged(bool) to QNetworkConfigurationManager::onlineStateChanged(bool) 
QObject::connect: Cannot connect (null)::configurationChanged(QNetworkConfiguration) to QNetworkConfigurationManager::configurationChanged(QNetworkConfiguration) 
+0

接続しようとしているオブジェクト/メソッドは何ですか? (null):: configurationAddedは、オブジェクトの作成が失敗したか、またはおそらくMOCされていないように見えます(接続するすべてのオブジェクトはQObjectを拡張し、Q_OBJECTマクロをクラス定義に持つ必要があります)。 – VitaminP

+1

問題だと思います(Edit2から)スロットがあなたの 'Transmissions'クラスのメンバではないということですが、単なるスタンドアロンの関数なので、ヘッダファイルを次のようにしてください:' class Transmissions:public QObject(){slots:void configurationAdded(..) ; void configurationRemoved(...);} '等 – docsteer

+0

@docsteer、あなたの権利私はそれらを私の見出しに入れませんでした。ここにいくつかのドキュメントがあります。doc.qt.nokia.com/stable/qnetworkconfigurationmanager.html私はdidnのように見えます – CountMurphy

答えて

3

それはこの行です: QNetworkAccessManager * NetworkManagerを=新しいQNetworkAccessManager(この);

これは間違っています。トランスミッションへのポインタ(「this」を介して)を使って構造体を構築しようとしていますが、これはあなたのクラスの1つと推測しています。これを次のように置き換えます。 QNetworkAccessManager * networkManager = new QNetworkAccessManager;

このポインタがQObjectを指している場合にのみ渡すことができます(Qtにリンクしたドキュメントを参照)。あるいは、クラスをQObjectに拡張させることもできます。

TransmissionsはQObjectを拡張しないため、 "this"を渡すとconnect(...)は機能しません。

+0

あなたは聖人です。一つの問題があります、私はエラーの束を取得しています。私は質問を更新しました。 – CountMurphy

関連する問題