问:我如何在WebKit中访问页面上的实际小部件?

时间:2010-05-27 21:38:36

标签: c++ qt webkit qtwebkit qwebview

有没有办法使用Qt访问WebKit页面上INPUTSELECT生成的小部件?

在相关的说明中,WebKit是否提供这些小部件,还是将其委托回Qt来生成它们?

2 个答案:

答案 0 :(得分:2)

没有“小工具”。较新的浏览器会自动渲染所有元素以允许叠加等。

如果你想操纵它们,请使用DOM。

答案 1 :(得分:1)

QWebView中的所有内容都不使用传统的Qt小部件系统。它只是由WebKit呈现的HTML。但是您可以使用evalJS函数访问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);