Название: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 10, 2014, 12:39 Добрый день.
Суть проблемы: есть много картинок, которые читаются с жесткого диска в момент выполнения программы. Выходит, что вместе с программой надо таскать все эти картинки, а это увеличивает объем программы на диске и может получится такое, что картинка случайно будет удалена. Вопрос: как мне запихнуть все эти картинки в ресурсный файл и вместе 50 картинок в папке с программой держать только этот файл? Читал про qrc тут: http://qt-project.org/doc/qt-5/resources.html Сделал так, как тут написано. Но если удалить картинку из папки, то программа потом не компилируется. Там написано, что с помощью rcc можно как-то сделать бинарный файл с рисунками и тянуть их оттуда (тогда, как я понимаю, не придется хранить все картинки на диске). Но у меня через Qt Creator не вышло так сделать. Подскажите, пожалуйста, как решить данную проблему? Название: Re: Работа с ресурсными файлами Отправлено: Old от Апрель 10, 2014, 12:46 Запакуйте все картинки в архив и доставайте их оттуда. Решений для этого вагон и маленькая тележка.
Начните смотреть с QuaZIP: http://quazip.sourceforge.net/ Название: Re: Работа с ресурсными файлами Отправлено: OKTA от Апрель 10, 2014, 12:58 Понятное дело не компилируется, т.к. файл ты удалил, а в qrc он остался прописан.
А что не получилось сделать? создаешь файл ресурсов, добавляешь его в .pro, пихаешь туда картинки свои и компилишь => все картинки впихнутся в .exe Название: Re: Работа с ресурсными файлами Отправлено: break от Апрель 10, 2014, 12:58 Цитировать Сделал так, как тут написано. Но если удалить картинку из папки, то программа потом не компилируется. Там написано, что с помощью rcc можно как-то сделать бинарный файл с рисунками и тянуть их оттуда (тогда, как я понимаю, не придется хранить все картинки на диске). Правильно компилироваться не будет. И картинки надо хранить на диске вместе с исходниками. Но выполняемой программе они уже не нужны т.к. будут храниться в ресурсах, а обращение к ним из ресурсов надо начинать с двоеточия в имени файла. Это все штатными средствами QT-ресурсов делается.Название: Re: Работа с ресурсными файлами Отправлено: Swa от Апрель 10, 2014, 12:59 Но если удалить картинку из папки, то программа потом не компилируется. А зачем вы удаляете картинку? Не удаляйте её. Пусть все эти картинки лежат в вашей папке проекта. При компиляции они будут встроены в exe файл. Название: Re: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 10, 2014, 13:12 Я видимо, неправильно выразился.
Мне надо чтоб вместе с программой не шли все картинки, т.к. пользователь может, например, заменить одну картинку, а это повлияет на ui. Мне надо хранить все картинки в каком-то файле, в котором пользователь не сможет их поменять. А потом, по мере необходимости, тянуть картинки из файла. С помощью чего это реализовать? Название: Re: Работа с ресурсными файлами Отправлено: Swa от Апрель 10, 2014, 13:13 Товарищ rudolfninja, вы читаете то, что вам пишут?
При компиляции эти картинки будут встроены в exe файл. Название: Re: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 10, 2014, 13:15 Да, хотел дописать по этому поводу, но уже не успел изменить сообщение. Напишу в этом.
Это повлияет на размер exe файла. Ну и, наверное, нехорошо пихать все в один exe. Хотелось бы, чтобы "суп отдельно, мухи отдельно". Название: Re: Работа с ресурсными файлами Отправлено: Swa от Апрель 10, 2014, 13:36 Если хотите отдельно, то пакуйте картинки в zip, но тогда будьте готовы к тому, что zip файл может быть удален пользователем или изменён.
Название: Re: Работа с ресурсными файлами Отправлено: panAlexey от Апрель 10, 2014, 13:44 Да, хотел дописать по этому поводу, но уже не успел изменить сообщение. Напишу в этом. пихни в библиотеку.Это повлияет на размер exe файла. Ну и, наверное, нехорошо пихать все в один exe. Хотелось бы, чтобы "суп отдельно, мухи отдельно". Название: Re: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 10, 2014, 13:58 Если запихнуть в dll, то потеряется кроссплатформенность.
Буду, наверное, все таки, в .exe их оставлять. Спасибо всем. Название: Re: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 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? Только, желательно, максимально подробно. Название: Re: Работа с ресурсными файлами Отправлено: OKTA от Апрель 10, 2014, 14:22 А чем qrc не устроил?
Название: Re: Работа с ресурсными файлами Отправлено: rudolfninja от Апрель 10, 2014, 14:41 qrc не подключишь динамически.
Разобрался с rcc. Всем, кто ответил, спасибо. Название: Re: Работа с ресурсными файлами Отправлено: break от Апрель 10, 2014, 14:47 Цитировать Если запихнуть в dll, то потеряется кроссплатформенность. Да ну ! Скомпилится либа в винде в ДЛЛ, в Линукс в СО - и никак кроссплатформенность не потеряется! |