我有简单的Qt GUI应用程序,它使用QtWebkit.我正在加载具有大量嵌套IFRAME标签的复杂页面.我想遍历完整的DOM树(就像调试面板中的Chrome浏览器一样),包括iframe的内容.
我的代码是:
QWebElement doc = ui->webView->page()->mainFrame()->documentElement();
QWebElement iframe = doc.findFirst("iframe[id=someid]");
QWebFrame *webFrame = ....? // how to get the QWebFrame for an iframe/frame QWebElement?
注意:
我可以遍历所有帧(包括嵌套):
void MainWindow::renderFramesTree(QWebFrame *frame, int indent)
{
QString s;
s.fill(' ', indent * 4);
ui->textLog->appendPlainText(s + " " + frame->frameName());
foreach (QWebFrame *child, frame->childFrames())
renderFramesTree(child, indent + 1);
}
但我的问题与此无关.我需要得到iframe-QWebElement的相应QWebFrame *.
感谢名单!
最佳答案 每个QWebFrame具有QList< QWebFrame *> QWebFrame :: childFrames()const方法.每个帧还有QString QWebFrame :: frameName()const.结合两者可以让你找到你需要的东西.
QWebFrame * frameImLookingFor = NULL;
foreach(QWebFrame * frame, ui->webView->page()->mainFrame()->childFrames())
{
if (frame->frameName() == QLatin1String("appFrame"))
{
frameImLookingFor = frame;
break;
}
}
if (frameImLookingFor)
{
// do what you need
}