Russian Qt Forum

Qt => Общие вопросы => Тема начата: gil9red от Январь 16, 2014, 06:21



Название: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: gil9red от Январь 16, 2014, 06:21
Есть html файлы, в которых есть картинки. Картинки являются локальными файлами.
Файлы картинок были удалены, как обновить QTextBrowser, чтоб увидеть, что удаленные картинки в html не отображались?
update и reload не помогает :(


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: Dexel от Январь 17, 2014, 01:35
Если они тянутся из ресурса, т.е. через qrc:/ , то до фени что они удалены физически.
qmake сразу крикнет что нет файлов ресурса.
А если читаешь прямиком, то в кеше возможно засели:
Код:
QWebSettings::setObjectCacheCapacities(0, 0, 0);


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: gil9red от Январь 17, 2014, 02:07
Если они тянутся из ресурса, т.е. через qrc:/ , то до фени что они удалены физически.
qmake сразу крикнет что нет файлов ресурса.
А если читаешь прямиком, то в кеше возможно засели:
Код:
QWebSettings::setObjectCacheCapacities(0, 0, 0);
А каким боком модуль qwebkit связан с классами QTextEdit и QTextDocument? :)


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: gil9red от Январь 20, 2014, 19:07
Up! :)


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: Bepec от Январь 20, 2014, 19:58
А если перевставить страничку, картинки исчезнут?


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: gil9red от Январь 20, 2014, 20:13
Ага, только это чистый костыль :)

Если так, то не сработает:
Код
C++ (Qt)
void refreshContent()
{
   textEdit->setHtml( textEdit->toHtml() );
}
 

А вот так работает:
Код
C++ (Qt)
void refreshContent()
{
   QString text = textEdit->toHtml();
   textEdit->clear();
   textEdit->setHtml( text );
}
 


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: Bepec от Январь 20, 2014, 20:28
Ммм... перед сном посмотрю что там за хитрости.

В принципе интересно. При отрисовке запрашиваются ресурсы и кешируются в QTextDocument. Причём имеются методы только добавления ресурсов.

Удаления нет :D Кеш удаляется только с объектом. Так что костыль вам в руки :D

PS мог и пропустить что-то, но это что-то тогда в глубине :)

PPS кстати они ещё и сравниваются при вставке новых данных. Потому и не работает простая "переустановка".

update: конечно можно всегда поменять приватные хедеры и добраться до cachedResources, но это ещё худший костыль :)


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: gil9red от Январь 20, 2014, 21:09
Спасибо за такой развернутый ответ :)


Название: Re: QTextBrowser(QTextEdit). Обновление содержимого.
Отправлено: Dexel от Январь 22, 2014, 08:40
Если они тянутся из ресурса, т.е. через qrc:/ , то до фени что они удалены физически.
qmake сразу крикнет что нет файлов ресурса.
А если читаешь прямиком, то в кеше возможно засели:
Код:
QWebSettings::setObjectCacheCapacities(0, 0, 0);
А каким боком модуль qwebkit связан с классами QTextEdit и QTextDocument? :)
Вай, пардон, не глянул  ;)