Библиотечная проблема: как мне настроить QtWebKit для разбора HTML? - PullRequest
3 голосов
/ 04 января 2011

Ник Преста показал, что вы можете анализировать HTML с помощью qt здесь: 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;
}

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Вам часто требуется объект QApplication (для GUI, для других, используйте QCoreApplicaiton), прежде чем делать что-либо полезное в Qt.

Попробуйте объявить один в верхней части основного:

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 и ожидание результатов само по себе неплохая идея, просто не требуется.

1 голос
/ 26 июля 2012

Вы можете искать в примере Qt, например, в программе предварительного просмотра, что-то вроде кода следующим образом:

QString text = plainTextEdit->toPlainText();
webView->setHtml(text, baseUrl);
...