Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: vdann от Март 25, 2011, 14:56



Название: Как формировать пути к данным в программе с QWebView
Отправлено: vdann от Март 25, 2011, 14:56
Как правильно формировать пути в html-строке или точнее относительно чего они должны быть прописаны?
Я использую такой код (папка smiles лежит в каталоге с программой)
Код:
QWebView webView;
webView.setHtml(QObject::tr("<img src='smiles/like.gif'>"));
webView.show();

- выводит пустой виджет


Название: Re: Как формировать пути к данным в программе с QWebView
Отправлено: Fess от Март 25, 2011, 15:03
пробуйте ./относительный/путь/от/исполняемого/файла/
лучше заносите все ваши смайлы в ресурсы и обращайтесь через ":/resource-path/file"


Название: Re: Как формировать пути к данным в программе с QWebView
Отправлено: Denjs от Март 25, 2011, 15:13
полагая, что относительные пути задаются всегда относитльно адреса отображаемой страницы,
а QWebView - это вполне себе натуральный браузер и есть (и успешно в инет постучится если есть связь и подсунуть ему ссылку) - то, очевидно (по крайней мере очень похоже на то), что "ваш относительный путь"("smiles/like.gif") - он отсчитывается относительно того, что написано в url()

т.е. вероятно, при установке html - надо бы наверное и второй парметр не опускать... не?
Цитировать
void QWebView::setHtml ( const QString & html, const QUrl & baseUrl = QUrl() )


Название: Re: Как формировать пути к данным в программе с QWebView
Отправлено: vdann от Март 25, 2011, 17:24
пробуйте ./относительный/путь/от/исполняемого/файла/
лучше заносите все ваши смайлы в ресурсы и обращайтесь через ":/resource-path/file"

'./относительный/путь/от/исполняемого/файла/' и 'относительный/путь/от/исполняемого/файла/'
ведут себя одинаково, с ресурсами работает без проблем, но количество смайликов может быть разным, по этому в ресурсы их нельзя

полагая, что относительные пути задаются всегда относитльно адреса отображаемой страницы,
а QWebView - это вполне себе натуральный браузер и есть (и успешно в инет постучится если есть связь и подсунуть ему ссылку) - то, очевидно (по крайней мере очень похоже на то), что "ваш относительный путь"("smiles/like.gif") - он отсчитывается относительно того, что написано в url()

т.е. вероятно, при установке html - надо бы наверное и второй парметр не опускать... не?
Цитировать
void QWebView::setHtml ( const QString & html, const QUrl & baseUrl = QUrl() )

то есть что-то вроде того
Код:
	
QString s("smiles/angel.gif");
ui.webView->setHtml(tr("<hr><img src='%1'>").arg(s), QUrl::fromLocalFile(QDir::currentPath()));

колупался, колупался - заработало!, но только таким образом -
Код:
QString s("smiles/angel.gif");
QUrl url(QUrl::fromLocalFile(dir.absoluteFilePath("smiles")));
QString path(url.path());
ui.webView->setHtml(tr("<hr><img src='%1'>").arg(s), url);
может кто прокоментирует почему так?


Название: Re: Как формировать пути к данным в программе с QWebView
Отправлено: Denjs от Март 25, 2011, 19:28
Не уверен, но может "smiles" - это не подкаталог текущего каталога ( QDir::currentPath() ) ))))
проверьте что вам отдает QDir::currentPath() и что отдает dir.absoluteFilePath("smiles") ?