QtWebkit:控制台应用程序

6

我是一名新手使用Qt。

我正在构建一个控制台应用程序,需要处理大量的真实世界HTML页面。由于QtWebkit具有清晰明确的API和易于获得,因此成为了一个容易的选择。

我查看了文档,它们说我可以使用QWebView::load()来加载页面。但是我正在构建一个控制台应用程序,无法使用小部件。我会收到以下错误:

QWidget: Cannot create a QWidget when no GUI is being used
The program has unexpectedly finished.

那么我如何在控制台应用程序中使用QtWebkit处理HTML页面呢?
2个回答

9

QtWebkit可以在没有小部件的环境下使用,但无法通过QCoreApplication执行。

解决方案是使用虚拟X服务器来执行程序。

安装Xvfb,然后执行以下操作:

xvfb-run --server-args="-screen 0 1024x768x24" ./framecapture google.cat google.png

提示:使用文档中的framecapture Webkit示例:http://doc.qt.io/archives/qt-4.7/webkit-framecapture.html


6

QWebPage可以在无窗口环境下使用。

要加载页面,可以像这样操作:

QWebPage page;
QUrl url = ...;
page.mainFrame()->load(url);

要访问DOM树,您可以使用QWebFrame :: documentElement()。请参阅API了解如何使用它。

1
@工作 我试过了,不起作用。给我同样的错误,说GUI不存在。 - Xolve
@Xolve:嗯,这很奇怪...根据文档它应该能够正常工作。我认为实现你想要的最简单方法是直接使用QtXml模块而不是通过QtWebKit获取DOM树。 - mtvec
@Job 实际的网页最好由实际的浏览器解析。 - Xolve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接