QT:如何收到QWebelement对象发射的事件?
-
05-10-2019 - |
题
我想在单击链接或在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()
方法。
不隶属于 StackOverflow