Russian Qt Forum
Ноябрь 24, 2024, 05:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Работа с ресурсными файлами
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Работа с ресурсными файлами (Прочитано 7397 раз)
rudolfninja
Гость
Работа с ресурсными файлами
«
:
Апрель 10, 2014, 12:39 »
Добрый день.
Суть проблемы: есть много картинок, которые читаются с жесткого диска в момент выполнения программы. Выходит, что вместе с программой надо таскать все эти картинки, а это увеличивает объем программы на диске и может получится такое, что картинка случайно будет удалена.
Вопрос: как мне запихнуть все эти картинки в ресурсный файл и вместе 50 картинок в папке с программой держать только этот файл?
Читал про qrc тут:
http://qt-project.org/doc/qt-5/resources.html
Сделал так, как тут написано. Но если удалить картинку из папки, то программа потом не компилируется. Там написано, что с помощью rcc можно как-то сделать бинарный файл с рисунками и тянуть их оттуда (тогда, как я понимаю, не придется хранить все картинки на диске). Но у меня через Qt Creator не вышло так сделать.
Подскажите, пожалуйста, как решить данную проблему?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Работа с ресурсными файлами
«
Ответ #1 :
Апрель 10, 2014, 12:46 »
Запакуйте все картинки в архив и доставайте их оттуда. Решений для этого вагон и маленькая тележка.
Начните смотреть с QuaZIP:
http://quazip.sourceforge.net/
Записан
OKTA
Гость
Re: Работа с ресурсными файлами
«
Ответ #2 :
Апрель 10, 2014, 12:58 »
Понятное дело не компилируется, т.к. файл ты удалил, а в qrc он остался прописан.
А что не получилось сделать? создаешь файл ресурсов, добавляешь его в .pro, пихаешь туда картинки свои и компилишь => все картинки впихнутся в .exe
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Работа с ресурсными файлами
«
Ответ #3 :
Апрель 10, 2014, 12:58 »
Цитировать
Сделал так, как тут написано. Но если удалить картинку из папки, то программа потом не компилируется. Там написано, что с помощью rcc можно как-то сделать бинарный файл с рисунками и тянуть их оттуда (тогда, как я понимаю, не придется хранить все картинки на диске).
Правильно компилироваться не будет. И картинки надо хранить на диске вместе с исходниками. Но выполняемой программе они уже не нужны т.к. будут храниться в ресурсах, а обращение к ним из ресурсов надо начинать с двоеточия в имени файла. Это все штатными средствами QT-ресурсов делается.
Записан
Swa
Самовар
Offline
Сообщений: 170
Re: Работа с ресурсными файлами
«
Ответ #4 :
Апрель 10, 2014, 12:59 »
Цитата: rudolfninja от Апрель 10, 2014, 12:39
Но если удалить картинку из папки, то программа потом не компилируется.
А зачем вы удаляете картинку? Не удаляйте её. Пусть все эти картинки лежат в вашей папке проекта. При компиляции они будут встроены в exe файл.
Записан
rudolfninja
Гость
Re: Работа с ресурсными файлами
«
Ответ #5 :
Апрель 10, 2014, 13:12 »
Я видимо, неправильно выразился.
Мне надо чтоб вместе с программой не шли все картинки, т.к. пользователь может, например, заменить одну картинку, а это повлияет на ui.
Мне надо хранить все картинки в каком-то файле, в котором пользователь не сможет их поменять. А потом, по мере необходимости, тянуть картинки из файла.
С помощью чего это реализовать?
Записан
Swa
Самовар
Offline
Сообщений: 170
Re: Работа с ресурсными файлами
«
Ответ #6 :
Апрель 10, 2014, 13:13 »
Товарищ rudolfninja, вы читаете то, что вам пишут?
При компиляции эти картинки будут встроены в exe файл.
Записан
rudolfninja
Гость
Re: Работа с ресурсными файлами
«
Ответ #7 :
Апрель 10, 2014, 13:15 »
Да, хотел дописать по этому поводу, но уже не успел изменить сообщение. Напишу в этом.
Это повлияет на размер exe файла. Ну и, наверное, нехорошо пихать все в один exe. Хотелось бы, чтобы "суп отдельно, мухи отдельно".
Записан
Swa
Самовар
Offline
Сообщений: 170
Re: Работа с ресурсными файлами
«
Ответ #8 :
Апрель 10, 2014, 13:36 »
Если хотите отдельно, то пакуйте картинки в zip, но тогда будьте готовы к тому, что zip файл может быть удален пользователем или изменён.
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Работа с ресурсными файлами
«
Ответ #9 :
Апрель 10, 2014, 13:44 »
Цитата: rudolfninja от Апрель 10, 2014, 13:15
Да, хотел дописать по этому поводу, но уже не успел изменить сообщение. Напишу в этом.
Это повлияет на размер exe файла. Ну и, наверное, нехорошо пихать все в один exe. Хотелось бы, чтобы "суп отдельно, мухи отдельно".
пихни в библиотеку.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
rudolfninja
Гость
Re: Работа с ресурсными файлами
«
Ответ #10 :
Апрель 10, 2014, 13:58 »
Если запихнуть в dll, то потеряется кроссплатформенность.
Буду, наверное, все таки, в .exe их оставлять.
Спасибо всем.
Записан
rudolfninja
Гость
Re: Работа с ресурсными файлами
«
Ответ #11 :
Апрель 10, 2014, 14:08 »
По ссылке, что я дал в первом посте, написано:
Цитировать
External Binary Resources
For an external binary resource to be created you must create the resource data (commonly given the .rcc extension) by passing the -binary switch to rcc. Once the binary resource is created you can register the resource with the QResource API.
For example, a set of resource data specified in a .qrc file can be compiled in the following way:
rcc -binary myresource.qrc -o myresource.rcc
In the application, this resource would be registered with code like this:
QResource::registerResource("/path/to/myresource.rcc");
Как мне в Qt Creator сделать подобное? Создать qrc файл у меня получилось. А вот сделать из него rcc - нет. Не подскажете как сделать rcc из qrc? Только, желательно, максимально подробно.
Записан
OKTA
Гость
Re: Работа с ресурсными файлами
«
Ответ #12 :
Апрель 10, 2014, 14:22 »
А чем qrc не устроил?
Записан
rudolfninja
Гость
Re: Работа с ресурсными файлами
«
Ответ #13 :
Апрель 10, 2014, 14:41 »
qrc не подключишь динамически.
Разобрался с rcc.
Всем, кто ответил, спасибо.
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Работа с ресурсными файлами
«
Ответ #14 :
Апрель 10, 2014, 14:47 »
Цитировать
Если запихнуть в dll, то потеряется кроссплатформенность.
Да ну ! Скомпилится либа в винде в ДЛЛ, в Линукс в СО - и никак кроссплатформенность не потеряется!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...