Qt: Come posso ricevere gli eventi generati da oggetti QWebElement?
-
05-10-2019 - |
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.
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()
.