问:我如何接收QWebElement对象触发的事件?

时间:2010-05-27 20:47:29

标签: qt events webkit qtwebkit qwebelement

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

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

2 个答案:

答案 0 :(得分:3)

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

根据this TODO list for WebKit,有计划添加QWebElement::connectEvent()方法。

答案 1 :(得分:2)

使用此功能:

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

只要用户点击链接并且页面的linkDelegationPolicy属性设置为委派指定网址的链接处理,就会发出此信号。

您可以按如下方式访问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);