有没有办法使用 Qt 访问由 WebKit 中的页面生成的小部件INPUT
和SELECT
在页面上生成的小部件?
在相关的说明中,WebKit 是提供这些小部件,还是委托给 Qt 来生成它们?
没有“小部件”。较新的浏览器自己渲染所有元素以允许覆盖等。
如果要操作它们,请使用 DOM。
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);