QT

2012-01-24 2 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); 
} 

여기 내 슬롯 및 신호 위의 코드를 넣으십시오. 내가 보낸 것처럼 한 문자열을받는 미리 정의 된 함수가 없다는 오류가 발생합니다. somone이이 Qstring 값을 XML 문서에 넣는 방법을 볼 수 있도록이 문제를 해결할 수 있습니까? 그래서

감사합니다 XML 읽을 수

는 편집 : 다음은 내가 선택할 수있는 기능이있다, 나는 모두를 시도했지만 내가 잘 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); 

편집을 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

"데이터"에 대한 디버그 출력을 게시 할 수 있습니까 – 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에 대한 include가없는 것처럼 보이지만 완전한 코드 없이는 말하기 어렵습니다. –

+0

QDomDocument 문서로 시도하십시오. (포인터 없음). 힙에 QDom 오브젝트를 작성할 필요가 없습니다. –