我想在单击链接或在QT中的WebKit实例中更改文本字段时收到通知。我如何将活动听众连接到 QWebElement?

我知道我可以在每个元素的 onchange / onclick 处理程序,但我正在寻找一个更干净的解决方案。

有帮助吗?

解决方案

使用此功能:

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);

其他提示

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

根据 Webkit的待办事项清单, ,有计划添加 QWebElement::connectEvent() 方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top