Всем привет!
Вот хочу чтобы в моей проге интерфейс (состоящий из нескольких файлов QML) загружался из одного zip архива!
Ток я не смог найти каким образом QDeclarativeView берёт данные для построения интерфейса!
Проще сказать: Что переопределять то?
думал там есть чтото вроде метода read, но ничего такого не нашел!
Подскажите пожалуйста!
т.е. каким образом QDeclarativeView читает QML?
setSource не то что надо!
Думаю за чтение и загрузку QML отвечает вовсе не QDeclarativeView, а QDeclarativeEngine.
Однако у него нету никаких виртуальных методов.
Более того, судя по его функциям addImportPath, addPluginPath и им подобным - не получится у тебя напрямую из архива доставать файлы.
Как возможный вариант можно предложить вот что:
перед использованием qml, распакуй архив во временную директорию и работай с ней
Учту это! Но всё же пока что буду копать в сторону переопределения!
Придумал костыль
У QDeclarativeEngine имеется свой QDeclarativeNetworkAccessManagerFactory c методом QNetworkAccessManager *create ( QObject * parent ) = 0.
нам нужно:
1. переопределить QNetworkAccessManager, который будет брать из zip архива данные
2. переопределить QDeclarativeNetworkAccessManagerFactory, который будет возвращать переопределенный QNetworkAccessManager
3. в setSource нашего declarative view устанавливаем какой-нибудь QUrl("zip://blablabla")
Пробуй!)
P.S. я не пробовал
Спасибо!!!
Ага попробую попозже!
О результатах отпишусь!
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)