Domanda

Voglio ricevere le notifiche ogni volta che i collegamenti sono scattati o campi di testo vengono modificati in un'istanza Webkit in Qt. Come posso collegare listener di eventi a un QWebElement?

So che posso mettere un po 'Javascript sul gestore onchange / onclick di ogni elemento, ma sto cercando una soluzione più pulita.

È stato utile?

Soluzione

Con questa funzione:

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

Questo segnale viene emesso ogni volta che l'utente fa clic su un link e di proprietà linkDelegationPolicy della pagina è impostato per delegare la gestione per l'URL specificato collegamento.

È possibile accedere al codice HTML nel seguente modo:

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

Altri suggerimenti

appare come l'unico modo (come di Qt 4.6) è JavaScript.

questa lista TODO per WebKit , ci sono piani per aggiungere un metodo QWebElement::connectEvent().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top