Я полагаю, что вы можете получить тип содержимого загруженной страницы, посмотрев коллекцию QWebElment после загрузки вашей страницы. Сначала вам нужно настроить слот события loadFinished для виджета веб-просмотра. Как это:
QWebView::connect(ui->webView, SIGNAL(loadFinished(bool)), this, SLOT(on_pageLoad_finished(bool)));
Метод on_pageLoad_finished должен выполняться каждый раз, когда страница загружается в элемент управления webview. Там у вас есть доступ к коллекциям веб-элементов через объект webframe. Ниже приведена возможная реализация слота on_pageLoad_finished
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 с подчеркиванием нет метаэлемента с атрибутом content-type, если пользователь нажимает на изображение или просто загружает его следующим образом:
QUrl url("http://www.motociclismo.es/rcs/noticias/2008/10_Oct/0610-bmw-s1000RR-02.jpg");
ui->webView->load(url);
но все еще создаются некоторые объекты dom. Для этого конкретного изображения оно должно выглядеть так, как показано ниже (вы можете получить через frame-> toHtml).
<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, используя следующий код:
QWebElementCollection collection0 = frame->findAllElements("img");
foreach (QWebElement element, collection0)
{
QStringList attributesList = element.attributeNames();
foreach (QString attributeName, attributesList)
{
qDebug() << attributeName << ":" << element.attribute(attributeName);
}
}
вы должны получить следующий результат:
"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 дает ссылку для показанного изображения. Я думаю, вы можете доверять его расширению при обнаружении типа; или просто загрузите изображение и определите его тип, используя подпись файла. Вы можете написать код для этого или использовать сторонние библиотеки изображений для получения типа файла.
надеюсь, это поможет, с уважением