隐藏所有div但只有一个(Qt Webkit)

时间:2013-04-17 11:38:02

标签: html css qt webkit qtwebkit

我想将HTML文档中每个元素的样式设置为“display:none;”,除了一个。我无法编辑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");

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

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

这可能是由于'canvas'的祖先'style:none;'以及因此不显示其中任何内容, 我的猜测是你可以像这样循环父母:

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

我可能会对语法略有不同。

答案 1 :(得分:1)

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

document.findAll(QLatin1String("div")

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