【问题标题】:Qt: How can I receive events fired by QWebElement objects?Qt:如何接收由 QWebElement 对象触发的事件?
【发布时间】:2010-05-27 20:47:29
【问题描述】:

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

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

【问题讨论】:

    标签: qt events webkit qtwebkit qwebelement


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

      • 谢谢,但是“onchange”事件怎么样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多