首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebView获取内容类型

QWebView获取内容类型
EN

Stack Overflow用户
提问于 2010-01-14 20:18:07
回答 1查看 3K关注 0票数 0

当我单击QWebView中的链接时,我需要根据该链接的MIME类型执行一些操作。

显然,当我点击链接QWebView试图导航到那里,但如何获得内容类型之后呢?

EN

回答 1

Stack Overflow用户

发布于 2010-01-15 01:29:36

我相信在加载页面之后,您可以通过查看QWebElment的集合来获得加载页面的内容类型。首先,您需要为webview小部件设置loadFinished事件槽。如下所示:

代码语言:javascript
复制
QWebView::connect(ui->webView, SIGNAL(loadFinished(bool)), this, SLOT(on_pageLoad_finished(bool)));

每次将页面加载到webview控件中时,都应该执行on_pageLoad_finished方法。在那里,您可以通过webframe对象访问web元素集合。下面是on_pageLoad_finished插槽的可能实现

代码语言:javascript
复制
void MainWindow::on_pageLoad_finished(bool ok)
{
    if (!ok) return;

    QWebFrame* frame = ui->webView->page()->currentFrame();
    if (frame!=NULL)
    {
        QWebElementCollection collection = frame->findAllElements("meta[http-equiv=content-type]");
        foreach (QWebElement element, collection)
        {
            qDebug() << element.attribute("http-equiv");
            qDebug() << element.attribute("content");
        }
    }
}

它应该为加载到应用程序输出的每个新页面转储内容类型。

update0图像链接:

如果用户单击图像,或者只是像这样加载图像,则下划线DOM模型中没有具有内容类型属性的meta元素:

代码语言:javascript
复制
QUrl url("http://www.motociclismo.es/rcs/noticias/2008/10_Oct/0610-bmw-s1000RR-02.jpg");
ui->webView->load(url);

但是仍然创建了一些dom对象。对于这个特定的图像,它应该如下所示(您可以通过frame->toHtml获得)。

代码语言:javascript
复制
<html>
<body style="margin: 0px;">
<img style="-webkit-user-select: none; cursor: -webkit-zoom-in; " src="http://www.motociclismo.es/rcs/noticias/2008/10_Oct/0610-bmw-s1000RR-02.jpg" width="426" height="320">
</body>
</html>

因此,如果要使用以下代码查询IMG对象:

代码语言:javascript
复制
QWebElementCollection collection0 = frame->findAllElements("img");
foreach (QWebElement element, collection0)
{
    QStringList attributesList = element.attributeNames();
    foreach (QString attributeName, attributesList)
    {
        qDebug() << attributeName << ":" << element.attribute(attributeName);
    }
}

您应该得到以下结果:

代码语言:javascript
复制
"style" : "-webkit-user-select: none; cursor: -webkit-zoom-in; "  
"src" : "http://www.motociclismo.es/rcs/noticias/2008/10_Oct/0610-bmw-s1000RR-02.jpg"
"width" : "426"  
"height" : "320"

src属性为您提供所示图像的链接。我想您可以在检测类型时信任它的扩展名;或者只需下载图像并使用文件签名检测它的类型。您可以为此编写代码,或者使用一些第三方映像库来获取文件类型。

希望这能帮上忙

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2067281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档