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 回答