Я просто столкнулся с очень похожей ситуацией (буквально).По-видимому, кеш QML жестко запрограммирован глубоко внутри источника Qt.Я нашел соответствующую публикацию на http://lists.qt.nokia.com/pipermail/qt-qml/2011-June/002743.html.
К сожалению, решение, основанное на этой ссылке, требует изменения вашей сборки Qt.Я не знаю, подходит ли это для вашей ситуации.
В настоящее время я думаю, что четыре константы определены в верхней части файла src / декларативный / util / qdeclarativepixmapcache.cpp (строки 66-69, ссылка на которую приведена выше) определяет, когда и почему изменяется кэш изображений QML.Я устанавливаю константу CACHE_EXPIRE_TIME равной 0, поскольку дальнейшая логика внутри этого файла указывает на то, что с константой, установленной на 0, элементы в кэше немедленно истекают и поэтому будут удалены.Я буду обновлять этот ответ по мере развития событий.
Редактировать:
Мое предлагаемое решение сработало.В файле QDeclarativePixmapCache.cpp измените строку 68 с
#define CACHE_EXPIRE_TIME 30
на
#define CACHE_EXPIRE_TIME 0
Перестройте Qt и ваше приложение, и изображения не будут кэшироваться (или, по крайней мере, поведение IЯ вижу, что это означает, что изображения больше не кэшируются).У этого решения есть несколько недостатков:
- Требуется модификация дерева исходных текстов Qt
- Неизвестный удар по производительности для всего приложения - не проблема для меня, но кое-что нужно учитывать.
Это решение работало с Qt версии 4.7.Удачи!