Russian Qt Forum

Qt => Qt Quick => Тема начата: lighting от Апреля 23, 2013, 12:42



Название: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 23, 2013, 12:42
Никто не сталкивался с такой проблемой, если указать WebView в качестве url локальный файл, то от выводит html файл как текстовый, с показом тегов и т.д.
Код
Javascript
                   WebView {
                       id: webView
                       url: Qt.resolvedUrl("qrc:/help/index.html")
                       preferredWidth: helpBrowser.width
}
Если-же указать адрес сайта в интернете то все Ок. Может кто сталкивался, знает как его заставить понимать локальные файлы.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 23, 2013, 13:13
а страница правильно-то сделана?)


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 23, 2013, 13:30
это было-бы слишком просто :)
IE 8 и Хром открывают ее нормально.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 23, 2013, 20:20
Хм, все работает даже на таком простейшем:
Код:
<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>
</html>
Кинь свою хтмльку, ну или хотя бы заголовок!


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 24, 2013, 11:45
Дело не в html хотя отчасти ты прав. Все работает нормально если загружать qml файл из папки программы. Если включить его в ресурсы тогда наблюдается описанная мной проблема.
Во вложении проект с примером.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 24, 2013, 14:37
попробуй заменить Qt.WebKit 1.1 на 1.0!


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 24, 2013, 16:39
у меня изначально именно 1.0 и использовался, но я всеравно попробовал еще раз - результат тот же самый.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 24, 2013, 18:11
эээээ,а у меня работает  ;D


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 25, 2013, 09:22
версия Qt и операционка какие? У меня Win XP SP3 Qt 4.8.4
Выложи плз. свою рабочую версию проекта.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 25, 2013, 12:42
у меня Win 7 Home Basic) Qt 4.7.4! Работает твоя версия, которую ты скидывал!!


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 25, 2013, 13:41
В этом оказалась вся проблема - при сборке под 4.7.4 все нормально отобразилось.


Название: Re: WebView криво открывает локальные файлы
Отправлено: OKTA от Апреля 25, 2013, 21:28
забавно конечно.. ???


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 26, 2013, 09:30
Люди, у кого стоит 4.8.4 - попробуйте запустить выложенный мной пример, хочется выяснить - связана эта проблема конкретно с моей конфигурацией Qt или эта проблема глобальная.


Название: Re: WebView криво открывает локальные файлы
Отправлено: silverrulezz от Апреля 26, 2013, 09:48
Win 7 x64 Qt 4.8.4

viewer.setMainQmlFile("qrc:/qml/WebTest/main.qml");
Выводит file:///C:/Users/User/Desktop/build-WebTest-Desktop-Debug/qrc:/qml/WebTest/main.qml: File not found

Вся беда в QmlApplicationViewer::setMainQmlFile.
void QmlApplicationViewer::setMainQmlFile(const QString &file)
{
    d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
#ifdef Q_OS_ANDROID
    setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
#else
    setSource(QUrl::fromLocalFile(d->mainQmlFile));
#endif
}

Замени setSource(QUrl::fromLocalFile(d->mainQmlFile)); на setSource(d->mainQmlFile); и все будет ок

P.S: пробуешь Qt necessitas ?


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 26, 2013, 13:50
silverrulezz да вообще-то в выложенном мной проекте эта строчка уже заменена, проблема не в этом.
Код
C++ (Qt)
void QmlApplicationViewer::setMainQmlFile(const QString &file)
{
   d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
#ifdef Q_OS_ANDROID
   setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
#else
   setSource(QUrl(d->mainQmlFile));
#endif
}
Цитировать
P.S: пробуешь Qt necessitas ?
Нет, пытаюсь простую систему справки в приложение добавить.


Название: Re: WebView криво открывает локальные файлы
Отправлено: tester64 от Апреля 28, 2013, 19:13
Можно перехватывать начало загрузки и подменять адреса.

В main.cpp:
Код
C++ (Qt)
#include <QDeclarativeContext>
viewer.rootContext()->setContextProperty("rootPath", QCoreApplication::applicationDirPath());

В main.xml:WebView:
Код
Javascript
onLoadStarted: {
var sUrl = url.toString();
var rxHtmlResource = /^qrc:(.+\.html)$/;
if (rxHtmlResource.test(sUrl)) {
console.log(sUrl + " is html resource");
var path = rxHtmlResource.exec(sUrl)[1];
url = "file://" + rootPath + path;
console.log("redirected to " + url);
}
}


Название: Re: WebView криво открывает локальные файлы
Отправлено: lighting от Апреля 29, 2013, 09:53
tester64 спасибо за попытку помочь, но мне хочется не в данном конкретном случае найти обходной вариант, а разобраться из-за чего не работает вообще. Раз один и тот-же пример работает в одной сборке Qt но не работает в другой значил либо у меня проблемы с какими-нибудь настройками Qt либо это вообще проблема Qt 4.8.4 и выше, вот это и хочется выяснить, подмена адреса в этом врядли поможет.


Название: Re: WebView криво открывает локальные файлы
Отправлено: tester64 от Апреля 30, 2013, 09:22
Раз один и тот-же пример работает в одной сборке Qt но не работает в другой значил либо у меня проблемы с какими-нибудь настройками Qt либо это вообще проблема Qt 4.8.4 и выше, вот это и хочется выяснить, подмена адреса в этом врядли поможет.

На Qt 4.8.4 под Linux проблема есть.