2

我想将我的 HTML 文档中每个元素的样式设置为“显示:无;”,除了一个。我无法编辑 HTML 源文件。我正在使用 Qt Webkit 来尝试这样做,这是我到目前为止的代码:

QWebFrame *frame = webView->page()->mainFrame();

QWebElement document = frame->documentElement();
foreach (QWebElement element, document.findFirst("body").findAll("*"))
    element.setAttribute("style", "display: none");


QWebElement canvas = document.findFirst("canvas");
canvas.setAttribute("style", "display: inline");

但是,这会隐藏所有内容,包括画布元素。

我怎么能这样做?

4

2 回答 2

1

这可能是由于 'canvas' 的祖先具有样式 'display:none;' 因此也不显示其中包含的任何内容,我的猜测是您可以像这样遍历父母:

QWebElement parent = canvas.parent();
do{
    parent.setAttribute("style", "display: inline");
}while(parent!=null)

不过,我可能对语法有点偏离。

于 2013-04-17T12:34:35.927 回答
1

你说你想操纵所有<div>元素的可见性。要获取所有这些,您可以将以下查询替换为您的foreach块:

document.findAll(QLatin1String("div")

其他答案中给出的建议也是正确的——您必须确保 的父元素<canvas>本身未设置为display: none.

于 2013-04-17T16:05:17.547 回答