Qt从页面获取DOM而不更新GUI

时间:2014-06-26 10:37:22

标签: c++ qt dom qwebkit

我正在修改Qt附带的DOM Traversal示例。但是,每当我看到一个链接时,我都希望"去"到该URL并遍历其DOM,但我不想重新加载GUI。现在我仍然使用示例中的代码来获取主页:

void Window::on_webView_loadFinished()
{
    treeWidget->clear();

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

    examineChildElements(document, treeWidget->invisibleRootItem());
}

这很有效。在examineChildElements()中,当我遇到一个特定的链接时,我然后用URL调用另一个函数(我检查了URL字符串;它是正确的):

void Window::parse_page(QString page_URL)
{
    QWebView *innerPage = new QWebView();
    innerPage->setUrl(page_URL);
    QWebFrame *frameInner = innerPage->page()->mainFrame();
    QWebElement documentBetrieb = frameInner->documentElement();

    get_biz_info(documentBetrieb);
    delete innerPage;
    return;
}

但是,当我遍历此文档(documentBetrieb)时,只有一个HTML标记。我是否缺少一个步骤,或者是在不使用QWebView的情况下将DOM从URL直接放入QWebElement的方法?

1 个答案:

答案 0 :(得分:0)

你确定setUrl()是同步加载URL的吗?我想你在访问DOM之前需要听QWebView :: loadFinished(bool ok)信号。