程序问题:如何设置QtWebKit来解析HTML?

时间:2011-01-04 00:56:18

标签: html qt html-parsing qtwebkit qwebelement

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;
}

2 个答案:

答案 0 :(得分: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循环并等待结果本身并不是一个坏主意,只是不需要。

答案 1 :(得分:1)

您可以按照以下代码搜索Qt示例,例如预览器:

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