3

Nick Presta は、ここで qt を使用して HTML を解析できることを示しました: https://stackoverflow.com/questions/489522/library-recommendation-c-html-parser

しかし、これをビルドしようとすると、「QWebFrame* frame = page.mainFrame();」でアクセス違反が発生します。ライン。

私は何を間違っていますか?

#include <QtWebKit\QWebElement>
#include <QtWebKit\QWebView>
#include <QtWebKit\QWebFrame>
#include <QtWebKit\QWebPage>
#include <iostream>

int main() {
 QWebPage page;
 QWebFrame* frame = page.mainFrame();

 frame->setHtml( "<html><head></head><body></body></html>" );
 QWebElement document = frame->documentElement();

 return 0;
}
4

2 に答える 2

2

Qt で有用なことを行う前にQApplication、(GUI の場合、その他の場合は) オブジェクトが必要になることがよくあります。QCoreApplicaiton

main の先頭で宣言してみてください。

int main(int argc, char* argv[]) 
{
    QApplication a(argc, argv);

    ...

    return a.exec(); // start event handling (if you have some UI or networking that is event based)
}

イベント処理がある場合は、(元のコードは編集前だったので)a.exec()代わりに返すことは問題ありません。ドキュメントを解析して操作したいだけなら、イベント ループは必要ないかもしれません。0

OTOH、WebKit は非同期であるため、exec ループを実行して結果を待つこと自体は悪い考えではなく、必須ではありません。

于 2011-01-04T07:50:19.327 に答える
1

次のコードのようなプレビューアのような Qt の例を検索できます。

QString text = plainTextEdit->toPlainText();
webView->setHtml(text, baseUrl);
于 2012-07-26T06:06:14.817 に答える