2010-08-20 5 views
6

Je suis nouveau chez Qt.QtWebkit: application console

Je construis une application console et j'ai besoin de traiter beaucoup de pages html réelles. QtWebkit est un choix facile en raison d'API clairement coupées et d'une disponibilité aisée.

J'ai vérifié les documents et ils disent que je peux charger des pages en utilisant QWebView :: load(). Mais je construis une application de console et je ne peux pas utiliser un widget. J'ai l'erreur comme: ? Donc, comment puis-je traiter les pages html en utilisant QtWebkit dans l'application de la console.

Répondre

9

QtWebkit peut être utilisé dans un environnement sans widget, mais ne peut pas être exécuté avec QCoreApplication.

La solution consiste à utiliser un faux serveur X pour exécuter le programme.

Installer Xvfb puis:

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

PD: Exemple d'utilisation de framecapture Webkit de docs: http://doc.qt.io/archives/qt-4.7/webkit-framecapture.html

6

QWebPage peut être utilisé dans un environnement sans widget.

Pour charger une page, faire quelque chose comme ça

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

Pour accéder à l'arborescence DOM, vous pouvez utiliser QWebFrame::documentElement(). Voir le API pour savoir comment l'utiliser.

+1

@Job Je l'ai essayé et ça ne fonctionne pas. Donne-moi la même erreur que GUI n'est pas présent. – Xolve

+0

http://pastebin.com/aC8mbDTU – Xolve

+0

@Xolve: Hmm c'est très étrange ... Cela devrait fonctionner selon [docs] (http://doc.trolltech.com/latest/qwebpage.html#details). Je pense que la façon la plus simple de faire ce que vous voulez est d'utiliser directement le module [QtXml] (http://doc.trolltech.com/latest/qtxml.html) au lieu d'obtenir l'arborescence DOM via QtWebKit. – Job

Questions connexes