2010-08-20 47 views
6

我是Qt的新手。QtWebkit:控制檯應用程序

我正在構建一個控制檯應用程序,我需要處理很多真實世界的html頁面。 QtWebkit是一個簡單的選擇,因爲它有明確的API和易用性。

我檢出了文檔,他們說我可以使用QWebView :: load()加載頁面。但是我正在構建一個控制檯應用程序,我不能使用一個小部件。我得到的錯誤爲: ?

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

那麼如何在控制檯應用程序中使用QtWebkit處理html頁面。

回答

9

QtWebkit可用於無窗口小部件環境,但無法使用QCoreApplication執行。

解決方案是使用假X服務器來執行該程序。

安裝的Xvfb,然後:

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

PD:使用從文檔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

@Job我嘗試過了,這是行不通的。給我提供GUI不存在的錯誤。 – Xolve 2010-08-21 06:11:05

+0

http://pastebin.com/aC8mbDTU – Xolve 2010-08-21 06:29:53

+0

@Xolve:嗯,這很奇怪......它應該按照[文檔](http://doc.trolltech.com/latest/qwebpage.html#details)工作。我認爲最簡單的方法是直接使用[QtXml](http://doc.trolltech.com/latest/qtxml.html)模塊,而不是通過QtWebKit獲取DOM樹。 – Job 2010-08-21 08:14:37