库问题:如何设置 QtWebKit 来解析 HTML?
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;
}
Nick Presta showed that you can parse HTML with qt here: https://stackoverflow.com/questions/489522/library-recommendation-c-html-parser
However, when I attempt to build this, I get an access violation on the "QWebFrame* frame = page.mainFrame();" line.
What am I doing wrong?
#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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Qt 中执行任何有用的操作之前,您通常需要一个 QApplication(对于 GUI,对于其他应用程序,请使用 QCoreApplicaiton)对象。
尝试在 main 顶部声明一个:
返回
a.exec()
而不是0
(因为我的原始代码在编辑之前)是可以的if 你有事件处理。如果您只想解析文档并使用它,则可能不需要事件循环。OTOH,WebKit 是异步的,因此运行 exec 循环并等待结果本身并不是一个坏主意,只是不是必需的。
You often need a
QApplication
(for GUI, for others, useQCoreApplicaiton
) object before you do anything useful in Qt.Try declaring one at the top of main:
Returning
a.exec()
instead of0
(as my original code was before edit) is fine if you have event handling. If you just want to parse a document and work with it, you might not don't need an event loop.OTOH, WebKit is async so running the exec loop and waiting for results is not a bad idea per se, just not required.
你可以像预览器一样搜索Qt示例,代码如下:
You can search the Qt example like previewer something like the code as follows: