Qt: Как я могу получить события, выпущенные объектами Qwebelement?

StackOverflow https://stackoverflow.com/questions/2924786

Вопрос

Я хочу получать уведомления при нажатии ссылок или текстовые поля изменяются в экземпляре 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() метод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top