我想将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元素。
我怎么能这样做?
答案 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
。