Pregunta

Quiero recibir notificaciones cada vez que se hace clic en enlaces o campos de texto se cambian en un caso en Qt Webkit. ¿Cómo puedo conectar los detectores de eventos a un QWebElement?

Sé que puedo poner un poco de Javascript controlador on onchange / onclick de cada elemento, pero estoy buscando una solución más limpia.

¿Fue útil?

Solución

El uso de esta función:

void QWebView::linkClicked ( const QUrl & url )   [signal]

Esta señal se emite cuando el usuario hace clic en un vínculo y la propiedad linkDelegationPolicy de la página se establece en delegar el manejo de la URL especificada enlace.

Se puede acceder al código HTML de la siguiente manera:

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);

Otros consejos

Parece que la única manera (como de Qt 4.6) es JavaScript.

De acuerdo con esta lista TODO para WebKit , hay planes para añadir un método QWebElement::connectEvent().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top