Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Quick _ Как QDeclarativeView читает файлы!

Автор: Strikevld 9.10.2011, 17:02

Всем привет!
Вот хочу чтобы в моей проге интерфейс (состоящий из нескольких файлов QML) загружался из одного zip архива!
Ток я не смог найти каким образом QDeclarativeView берёт данные для построения интерфейса!
Проще сказать: Что переопределять то?
думал там есть чтото вроде метода read, но ничего такого не нашел!
Подскажите пожалуйста!

т.е. каким образом QDeclarativeView читает QML?
setSource не то что надо!

Автор: PAFOS 12.10.2011, 16:01

Думаю за чтение и загрузку QML отвечает вовсе не QDeclarativeView, а QDeclarativeEngine.
Однако у него нету никаких виртуальных методов.
Более того, судя по его функциям addImportPath, addPluginPath и им подобным - не получится у тебя напрямую из архива доставать файлы.

Как возможный вариант можно предложить вот что:
перед использованием qml, распакуй архив во временную директорию и работай с ней

Автор: Strikevld 12.10.2011, 18:37

Учту это! Но всё же пока что буду копать в сторону переопределения!

Автор: PAFOS 14.10.2011, 8:12

Придумал костыль :)

У QDeclarativeEngine имеется свой QDeclarativeNetworkAccessManagerFactory c методом QNetworkAccessManager *create ( QObject * parent ) = 0.

нам нужно:

1. переопределить QNetworkAccessManager, который будет брать из zip архива данные
2. переопределить QDeclarativeNetworkAccessManagerFactory, который будет возвращать переопределенный QNetworkAccessManager
3. в setSource нашего declarative view устанавливаем какой-нибудь QUrl("zip://blablabla")

Пробуй!)

P.S. я не пробовал :)

Автор: Strikevld 19.10.2011, 19:46

Спасибо!!!
Ага попробую попозже!
О результатах отпишусь!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)