Qt: Как я могу получить события, выпущенные объектами Qwebelement?
-
05-10-2019 - |
Вопрос
Я хочу получать уведомления при нажатии ссылок или текстовые поля изменяются в экземпляре WebKit в Qt. Как я могу подключить слушателей событий к QWebElement
?
Я знаю, что я могу поставить немного JavaScript на каждый элемент onchange
/ onclick
Обработчик, но я ищу чистое решение.
Решение
Используя эту функцию:
void QWebView::linkClicked ( const QUrl & url ) [signal]
Этот сигнал испускается всякий раз, когда пользователь нажимает на ссылку, и свойство LinkSdeLegation PageSELEGITYPOLIY установлено для делегирования обработки ссылок для указанного URL.
Вы можете получить доступ к HTML-код следующим образом:
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);
Другие советы
Похоже, единственный способ (по состоянию на Qt 4.6) - это JavaScript.
Согласно с Этот список Todo для WebKit, есть планы добавить QWebElement::connectEvent()
метод.