2011-01-04 2 views
3

Ник Presta показал, что вы можете разобрать HTML с Qt здесь: https://stackoverflow.com/questions/489522/library-recommendation-c-html-parserLIbrary issue: Как настроить QtWebKit для анализа HTML?

Однако, когда я пытаюсь построить это, я получаю нарушение прав доступа на «QWebFrame * рама = 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

Вы часто нуждаетесь в QApplication (для графического интерфейса пользователя, для других, использовать 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 async, так что запуск цикла exec и ожидание результатов - это не плохая идея сама по себе, просто не требуется.

+2

Все, что включает в себя '' QtGui' нуждается QApplication', для других вам нужно 'QCoreApplication'. – ismail

+0

@ Ísmail: Спасибо! изм. – Macke

1

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

QString text = plainTextEdit->toPlainText(); 
webView->setHtml(text, baseUrl); 
Смежные вопросы