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;
}
答案 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);