QT

2012-01-24 10 views
1

私はこの機能を使用してXML文書として文字列を受け付けておりますでQDomDocumentオブジェクトをXMLとして文字列の読み方:QT

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

Iを:

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

、ここでは私のスロットと信号であり、上記のコードを置く私は送信したように1つの文字列を受け取る事前定義された関数がないというエラーが出る...私はこのQstringの値をXML文書に入れる方法を見るためにsomoneがこれを修正しようとする可能性があります。 これらは私が選択する必要が機能している、私はすべてを試してみましたが、私が右のparemetersを送信していないですようだ:

// 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); 

EDITだから私はあなたに

EDITありがとうXML

を読むことができます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のような意味ですか?

+0

"data"のデバッグ出力を投稿できます – Neox

答えて

3

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

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

+0

'document-> setContent(reply)'はうまくいかないようです。私はエラーが発生します:**エラー: '((HttpWindow *)this) - > HttpWindow :: document'のメンバー 'setContent'を要求します。これは非クラス型 'QDomDocument *' **です。 .hファイルのQDomDocument: 'QDomDocument * document;' – Denonth

+0

これはQDomDocumentのインクルードがないようですが、完全なコードがないと確実に言うのは難しいです。 –

+0

QDomDocumentドキュメントで試してください。 (ポインタなし)。ヒープ上にQDomオブジェクトを作成する必要はありません。 –