QWebview - setBaseUrl не работает

Я хочу отображать html из QString в QWebView, используя

QWebView::setHtml( QString, QUrl );

Изображения должны быть загружены из временного каталога c:/temp. В html-коде изображения ссылаются только на имена файлов, без пути, например.

<img src="myimage.png">

Я предоставляю этот путь как baseUrl со вторым параметром setHtml, но изображения не отображаются. Я пытался ссылаться на изображения с полным путем:

<img src="c:/temp/myimage.png">

и работает корректно - изображение отображается.

Я проверил, действителен ли URL-адрес:

QUrl base = QUrl::fromUserInput("c:/temp");
    if (!base.isValid())
        return false;

и URL считается действительным. Что я здесь делаю неправильно?

Я работаю на Windows, с Qt 4.8.4

Спасибо за любые подсказки!


person Valentin Heinitz    schedule 12.08.2013    source источник


Ответы (1)


Решено! Щелчок правой кнопкой мыши по отсутствующему символу изображения в QWebView поносил, что изображение имело не адрес c:/temp/myimage.png, как я ожидал, а c:/myimage.png . Я попытался установить baseUrl как c:/temp/. и теперь все работает!

Похоже QWebView интерпретировал baseUrl как html-файл, относительно которого расположены изображения. На мой взгляд не имеет смысла QWebView::setHtml, где исходник идет из строки, а html-файла на самом деле нет, а есть только base-директория.

person Valentin Heinitz    schedule 12.08.2013