0

我正在修改 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());
}

这很好用。在 inspectChildElements() 中,当我遇到特定链接时,我会使用 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 标签。是否有我遗漏的步骤,或者将 DOM 从 URL 直接放入 QWebElement 而不使用 QWebView 的方法?

4

1 回答 1

0

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

于 2014-06-26T11:12:47.263 回答