crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как QDeclarativeView читает файлы!, нужно загружать QML из архива
Strikevld
  опции профиля:
сообщение 9.10.2011, 17:02
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 53
Регистрация: 6.9.2011
Пользователь №: 2849

Спасибо сказали: 6 раз(а)




Репутация:   0  


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

т.е. каким образом QDeclarativeView читает QML?
setSource не то что надо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 12.10.2011, 16:01
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


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

Как возможный вариант можно предложить вот что:
перед использованием qml, распакуй архив во временную директорию и работай с ней
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Strikevld
  опции профиля:
сообщение 12.10.2011, 18:37
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 53
Регистрация: 6.9.2011
Пользователь №: 2849

Спасибо сказали: 6 раз(а)




Репутация:   0  


Учту это! Но всё же пока что буду копать в сторону переопределения!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 14.10.2011, 8:12
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


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

У 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
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 53
Регистрация: 6.9.2011
Пользователь №: 2849

Спасибо сказали: 6 раз(а)




Репутация:   0  


Спасибо!!!
Ага попробую попозже!
О результатах отпишусь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 7:08