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

发布于 2024-10-10 08:24:17 字数 734 浏览 8 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天涯沦落人 2024-10-17 08:24:17

在 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 (因为我的原始代码在编辑之前)是可以的if 你有事件处理。如果您只想解析文档并使用它,则可能不需要事件循环。

OTOH,WebKit 是异步的,因此运行 exec 循环并等待结果本身并不是一个坏主意,只是不是必需的。

You often need a QApplication (for GUI, for others, use QCoreApplicaiton) object before you do anything useful in Qt.

Try declaring one at the top of 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)
}

Returning a.exec() instead of 0 (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.

老娘不死你永远是小三 2024-10-17 08:24:17

你可以像预览器一样搜索Qt示例,代码如下:

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

You can search the Qt example like previewer something like the code as follows:

QString text = plainTextEdit->toPlainText();
webView->setHtml(text, baseUrl);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文