2

我想在 Qt 中的 Webkit 实例中单击链接或更改文本字段时收到通知。如何将事件侦听器连接到一个QWebElement

onchange我知道我可以在每个元素的/处理程序上放置一些 Javascript onclick,但我正在寻找更清洁的解决方案。

4

2 回答 2

3

看起来唯一的方法(从 Qt 4.6 开始)是 JavaScript。

根据这个 WebKit 的 TODO 列表,有计划添加一个QWebElement::connectEvent()方法。

于 2010-05-28T07:42:28.697 回答
2

使用此功能:

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

每当用户单击链接并且页面的 linkDelegationPolicy 属性设置为委派指定 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);
于 2010-05-29T04:23:26.427 回答