QWebView에서 링크를 클릭하면 해당 링크의 MIME 형식에 따라 몇 가지 작업을 수행해야합니다.QWebView 콘텐츠 형식을 얻으려면
분명히 QWebView 링크를 클릭하면 거기로 이동하려고 시도하지만,이 후에 컨텐츠 유형을 얻으려면 어떻게해야합니까?
QWebView에서 링크를 클릭하면 해당 링크의 MIME 형식에 따라 몇 가지 작업을 수행해야합니다.QWebView 콘텐츠 형식을 얻으려면
분명히 QWebView 링크를 클릭하면 거기로 이동하려고 시도하지만,이 후에 컨텐츠 유형을 얻으려면 어떻게해야합니까?
페이지가로드 된 후 QWebElment의 컬렉션을보고로드 된 페이지의 콘텐츠 유형을 가져올 수 있다고 생각합니다. 먼저 webview widget에 대한 loadFinished 이벤트 슬롯을 설정해야합니다. 이렇게 :
QWebView::connect(ui->webView, SIGNAL(loadFinished(bool)), this, SLOT(on_pageLoad_finished(bool)));
페이지가 웹 뷰 컨트롤에로드 될 때마다 실행해야합니다. 웹 프레임 객체를 통해 웹 요소 컬렉션에 액세스 할 수 있습니다. 아래는 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 모델의 내용 유형 속성에는 메타 요소가 없습니다 :
QUrl url("http://www.motociclismo.es/rcs/noticias/2008/10_Oct/0610-bmw-s1000RR-02.jpg");
ui->webView->load(url);
하지만 아직 생성 된 DOM 개체가 있습니다. 이 특정 이미지의 경우 아래 그림과 같아야합니다 (프레임 -> 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 객체를 조회 할 경우 :
"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 속성은 당신에게 이미지에 대한 링크를 제공합니다
QWebElementCollection collection0 = frame->findAllElements("img");
foreach (QWebElement element, collection0)
{
QStringList attributesList = element.attributeNames();
foreach (QString attributeName, attributesList)
{
qDebug() << attributeName << ":" << element.attribute(attributeName);
}
}
당신이 점점되어야한다 결과 다음과 표시됩니다. 유형을 감지 할 때 확장자를 신뢰할 수 있다고 생각합니다. 또는 이미지를 다운로드하고 파일 서명을 사용하여 이미지를 검색 할 수 있습니다. 이 코드를 작성하거나 타사 이미징 라이브러리를 사용하여 파일 유형을 가져올 수 있습니다.
도움이 되시길 바랍니다.
이것은 HTML 페이지에서만 작동하나요? 다른 유형의 링크를 클릭하면 어떻게됩니까? 어떻게 MIME 형식을 얻을 수 있습니까? – pafcu
pls, 원래 응답에 대한 업데이트를 참조하십시오. –