2010-05-27 2 views

Répondre

1

Tout l'intérieur de QWebView n'utilise pas le système de widget Qt conventionnel. C'est seulement du HTML, rendu par WebKit. Mais vous pouvez accéder à html en utilisant la fonction evalJS. Exemple de code:

QString Widget::evalJS(const QString &js) 
{ 
    QWebFrame *frame = ui->webView->page()->mainFrame(); 
    return frame->evaluateJavaScript(js).toString(); 
} 

evalJS(QString("document.forms[\"f\"].text.value = \"%1\";").arg(fromText)); 

evalJS(QString("document.forms[\"f\"].langSelect.value = \"%1\";").arg(langText)); 

evalJS(QString("translate()")); 

QString from = evalJS("document.forms[\"f\"].text.value"); 
QString translation = evalJS("document.forms[\"f\"].translation.value"); 
ui->textEditTo->setText(translation); 
2

Il n'y a pas de "widgets". Les nouveaux navigateurs rendent tous les éléments eux-mêmes pour permettre les superpositions, etc.

Si vous souhaitez les manipuler, utilisez le DOM.

+0

QtWebKit n'utilise-t-il pas les widgets Qt et le système de gestion de la douleur pour dessiner la page Web? QtWebKit dépend de QtGui. – CMircea

+0

Qu'en est-il des éléments interactifs, comme les champs de texte générés par INPUT? Ils ont besoin de stocker des informations sur la sélection, la position du curseur, etc., donc ne seraient-ils pas un type d'objet "widget"? –

+0

@iconiK, @Jen: Non. Le widget le plus bas est le 'QWebView' lui-même. Tout à l'intérieur qui n'utilise pas le système de widget Qt classique. C'est rendu par [WebKit] (http://webkit.org/). – Troubadour

Questions connexes