1

この関数を使用して文字列をXMLドキュメントとして受け取っています。

void HttpWindow::replyFinished(QNetworkReply *reply)
{
     QString data = reply->readAll().trimmed();
     bool value=document->setContent(&data);
}

これが私のスロットと信号です:

connect(reply, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

上記のコードを入力すると、送信したとおりに1つの文字列を受け取る事前定義された関数がないというエラーが発生します...誰かがこれを修正して、このQstring値をxmlドキュメントに入れる方法を確認できますか?だから私はXMLを読むことができます

ありがとうございました

編集:これらは私が選択しなければならない機能です、私はすべてを試しましたが、私は正しいパラメータを送信していないようです:

 // Qt extensions
    bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );

編集2:私はそれをコンパイルすることはできません、私はあなたにこのコードを与えることができます:

httpwindow.cpp: In member function 'void HttpWindow::replyFinished(QNetworkReply*)':
httpwindow.cpp:140: error: no matching function for call to 'QDomDocument::setContent(QString*)'
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:343: note: candidates are: bool QDomDocument::setContent(const QByteArray&, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:344: note:                 bool QDomDocument::setContent(const QString&, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:345: note:                 bool QDomDocument::setContent(QIODevice*, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:346: note:                 bool QDomDocument::setContent(QXmlInputSource*, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:347: note:                 bool QDomDocument::setContent(const QByteArray&, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:348: note:                 bool QDomDocument::setContent(const QString&, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:349: note:                 bool QDomDocument::setContent(QIODevice*, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:350: note:                 bool QDomDocument::setContent(QXmlInputSource*, QXmlReader*, QString*, int*, int*)

または、そのQdebug出力を取得するために何をすべきかを教えてください。あなたは好きQdebug<<dataですか?

4

1 に答える 1

3

QStringポインターを受け取るQDomDocument::setContent()のオーバーロードは実際にはありません。値を渡すと、エラーが修正されます。

ただし、コードには別の重大な問題があります。それは、QByteArray(readAll()の結果)からQStringに変換しようとしていることです。コンテンツがASCIIであると想定して変換が行われるため、これは不要であるだけでなく危険です。document-> setContent(reply)を呼び出すだけです。

于 2012-01-25T17:24:13.227 に答える