Russian Qt Forum

Qt => Общие вопросы => Тема начата: darkmacho от Ноябрь 26, 2008, 13:07



Название: Ресурсы
Отправлено: darkmacho от Ноябрь 26, 2008, 13:07
Всем привет
Вопрос по release версии:Если скомпилировать в release там что рядом с exe файлом должны быть ресурсы что ли?Я вот написал там вывод gif анимации и теперь эта картинака должна лежать в одной папке?


Название: Re: Ресурсы
Отправлено: EhTemka от Ноябрь 26, 2008, 18:58
Если вы gif добавили в файл ресурсов в проекте, то не надо.
А если нет, то от куда вы загружаете этот gif, там он и должен лежать. 


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 26, 2008, 19:52
А в СТУДИИ можно добавлять только bmp,toolbar,dialog а как добавить gif ?


Название: Re: Ресурсы
Отправлено: pastor от Ноябрь 26, 2008, 20:18
Куда добавить? В какие ресурсы, судийные или Qt?


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 26, 2008, 20:47
ну в студии же  можно добавлять что то в проект  new items,resource и вот там ресурсы добавлять можно bmp,toolbar  и т. д.


Название: Re: Ресурсы
Отправлено: pastor от Ноябрь 26, 2008, 21:08
Какое отношение это имеет к Qt?


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 11:58
я создал qt проект  открыл его в СТУДИИ и как в этот проект добавить ресурс? Ну я подумал в СТУДИИ есть ПРОЕКТ->ДОбавить РЕСУРС-> так не получается! А как добавить то


Название: Re: Ресурсы
Отправлено: EhTemka от Ноябрь 27, 2008, 12:07
В проекте должен быть файл с расширением qrc (скорее всего <Имя файла главного окна>.qrc). Открываешь его в студии и по правой клавише пункт "Add File...".

Доступ к файлу ресурса - ":/<какой-то Prefix>/<имя файла>"


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 27, 2008, 12:35
В проекте должен быть файл с расширением qrc (скорее всего <Имя файла главного окна>.qrc). Открываешь его в студии и по правой клавише пункт "Add File...".

Доступ к файлу ресурса - ":/<какой-то Prefix>/<имя файла>"
<Имя файла главного окна>.qrc -> <Имя файла проекта>.qrc, хотя можно назвать как угодно. Главное в pro файл добавить строчку RESOURCES = <имя>.qrc


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 13:16
например у меня есть на диске C:\avat   -папка проекта  я его добавил в студию в этой папке нахожу avat.pro файл добавляю строчку RESOURCES =rc.qrc в блокноте создаю rc.qrc добавляю в проект. Gif катинка - C:\ee.gif   в файле rc.qrc пишу c:\ee.gif Я правильно понял???


Название: Re: Ресурсы
Отправлено: EhTemka от Ноябрь 27, 2008, 14:53
Если ты работаешь в студии то
Цитировать
Открываешь его в студии и по правой клавише пункт "Add File...".
Его - это rc.qrc.


Название: Re: Ресурсы
Отправлено: Eugene Efremov от Ноябрь 27, 2008, 15:23
например у меня есть на диске C:\avat   -папка проекта  я его добавил в студию в этой папке нахожу avat.pro файл добавляю строчку RESOURCES =rc.qrc в блокноте создаю rc.qrc добавляю в проект. Gif катинка - C:\ee.gif   в файле rc.qrc пишу c:\ee.gif Я правильно понял???

Неправильно. Пишу по шагам:

1. Копируешь gif в C:\avat\img\.

2. Создаешь в C:\avat\ файл с расширением qrc (например avat.qrc) и следующим содержимым:
Код
XML
<!DOCTYPE RCC><RCC version='1.0'>
<qresource>
<file>img/ee.gif</file>
</qresource>
</RCC>
 
На всякий случай: буковки XML в первую строчку кода добавил форум. Их в qrc-файл писать не надо.  :)

3. Таки да, добавляешь строчку «RESOURCES = avat.qrc» в pro-файл.

4. После этого внутри программы рисунок будет доступен как ":img/ee.gif". Всё.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 18:13
Все делал как  написано(":img/ee.gif" заменил на это "img/ee.gif") Когда компилирую gif показывает а как захожу так c:\avat\release\avat.exe не работает.Если скопировать этот экзешник в c:\avat где папка img то работает.Значит всегда img с собой надо тащить что ли?


Название: Re: Ресурсы
Отправлено: Eugene Efremov от Ноябрь 27, 2008, 18:29
Все делал как  написано(":img/ee.gif" заменил на это "img/ee.gif") Когда компилирую gif показывает а как захожу так c:\avat\release\avat.exe не работает.Если скопировать этот экзешник в c:\avat где папка img то работает.Значит всегда img с собой надо тащить что ли?

А вот не надо было менять ":img/ee.gif" на "img/ee.gif". Первый вариант (начинается с ':') указывает на ресурс внутри экзешника. Второй (без ':') — на путь к файлу, вычисляемый относительно текущей директории. Т.е. — работающий именно так, как ты описал.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 19:16
Но так вообще не находит

Код
C++ (Qt)
#include <QtGui>
 
// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
   QApplication app(argc, argv);    
   QLabel       lbl;
QMovie       mov(":img/ee.gif");
 
   lbl.setMovie(&mov);
 
   lbl.resize(328, 270);
   lbl.show();
   mov.start();
 
   return app.exec();
}

Пустое окно


Название: Re: Ресурсы
Отправлено: ритт от Ноябрь 27, 2008, 19:25
:/img/ee.gif


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 19:30
так тоже не выходит


Название: Re: Ресурсы
Отправлено: ритт от Ноябрь 27, 2008, 19:43
чушь какую-то городишь...
прикладывай архив с проектом


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 27, 2008, 19:51
....


Название: Re: Ресурсы
Отправлено: ритт от Ноябрь 27, 2008, 21:02
и? всё работает. проблема-то в чём?


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 08:06
у меня выходит пустое окно! :(


Название: Re: Ресурсы
Отправлено: EhTemka от Ноябрь 28, 2008, 11:12
Тут дело не в ресурсах.

Qt Assistant
Цитировать
To configure Qt with GIF support, pass -qt-gif to the configure script or check the appropriate option in the graphical installer.

Возможно дело в этом


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 12:23
А как это исправить?


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 28, 2008, 12:36
Пересобрать Qt с этой опцией.
Только с начала попробуй заменить gif на png, чтобы быть точно уверенным.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 14:08
Я заменил QMovie       mov(":img/ee.gif");
на
QMovie       mov(":img/ee.mng");

и  в папке  img заменил на ee.mng
Все равно не показывает


Название: Re: Ресурсы
Отправлено: pastor от Ноябрь 28, 2008, 16:31
Все равно не показывает

Какая версия Qt? Покажи содержимое файла QTDIR/configure.cache


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 17:13
Как я понимаю QTDIR- это директория где расположена библиот.qt но этот файл пуст!!!


Название: Re: Ресурсы
Отправлено: EhTemka от Ноябрь 28, 2008, 19:13
Я заменил QMovie       mov(":img/ee.gif");
на
QMovie       mov(":img/ee.mng");

и  в папке  img заменил на ee.mng
Все равно не показывает

Что значит заменил на ee.mng. Ты случаем не расширение отредактировал?
Возьми другой какой-нибуть png файл


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 20:12
Нет просто взял одну картинку mng переименовал еЁ  в ee.mng  скопировал в img


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 28, 2008, 20:21
Попробуй все таки png, т.к. mng тоже может не поддерживаться.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 20:29
Результат такой же

Может у меня ошибка вот текст
avat.cpp

Код
C++ (Qt)
#include <QtGui>
 
// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
&#160; QApplication app(argc, argv);
&#160; QLabel lbl;
&#160; QMovie mov(":/img/ee.png");
 
&#160; lbl.setMovie(&mov);
 
&#160; lbl.resize(328, 270);
&#160; lbl.show();
&#160; mov.start();
 
&#160; return app.exec();
}

файл rc.qrc
Код
XML
<!DOCTYPE RCC><RCC version='1.0'><qresource> <file>img/ee.png</file></qresource></RCC>
 
 

файл avat.pro

Код
C++ (Qt)
######################################################################
# Automatically generated by qmake (2.01a) ?? 7. ??? 21:56:11 2008
######################################################################
 
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
 
# Input
SOURCES += avat.cpp
RESOURCES = rc.qrc

Ну как?

Пользуемся тэгом код.


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 28, 2008, 20:43
Какой дистрибутив Qt? Как устанавливал?


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 28, 2008, 20:49
...
qt-win-opensource-src-4.4.3


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 28, 2008, 20:50
Перекомпилируй. В Wiki есть руководство, там все нормально расписано.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 29, 2008, 06:32
А вот как со старой быть удалить QTDIR и все?


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 29, 2008, 13:22
Не трогай. Ее и перекомпилируй.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 29, 2008, 14:29
но каак? я ж до этого по этому http://symmetrica.net/qt4/qt-win.htm устанавливал
а можно так же но при configure.exe –platform win32-msvc200x  так же доюавить и другие настройки


Название: Re: Ресурсы
Отправлено: Пантер от Ноябрь 29, 2008, 15:52
Нужно!
configure.exe --help и в путь.


Название: Re: Ресурсы
Отправлено: darkmacho от Ноябрь 29, 2008, 16:44
Перекомпилировал не работает!
Хотел еще спросить, но решил попробовать снова.
взял папку c:\gaga туда скопировал cpp файл и rc.qrc .Запустил qmake и т.д. Открываю файл проекта а там все  готово
-resource файлы
-source файлы
-generated файлы
(до была  папка только source файлов)
в generated  лежит файл qrc_rc.cpp
в  resource : ee.gif и rc.qrc
в source : gaga.cpp

Все работает спасибо всем кто ответил


Название: Re: Ресурсы
Отправлено: kolob от Февраль 11, 2011, 15:42
Добрый день. не хотелось бы начинать новую тему, вопрос похожий. По форуму поиск ни чего не дал. Мне нужно запихнуть в exe файл txt. В файле находиться список. В программе нужно открыть этот файл и дальше обрабатывать по назначению. Я бы конечно мог его с собой таскать. Но требуется что бы программа было 1м файлом. Пока что думаю только про файл ресурсов, но что то не очень получается.
Подскажите у кого какие идеи по этому поводу. Или может есть уже готовые решения?


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 11, 2011, 15:46
Как пробуешь и что не получается?


Название: Re: Ресурсы
Отправлено: kolob от Февраль 11, 2011, 16:56
У меня есть файл txt. Он мне нужен только для чтения, чтобы выгружать из него инфу. Но нужно его как то вшить в exe.
Делал через ресурс так:
1. В *.pro записал RESOURCES = файл_ресурс.qrc
2. Файл находится в каталоге res/ , который находиться в каталоге проекта.
3. Файл_ресурс.qrc
Код:
<!DOCTYPE RCC><RCC version='1.0'>
<qresource>
<file>res/файл_ресурс.txt</file>
</qresource>
</RCC>
4. В программе пишу QFile fille(":res/файл_ресурс.txt");
и т.д.

Но пока все описанное не получается.


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 11, 2011, 17:22
Что не получается??? Ты можешь нормально написать? Файл не открывается? Файл не читается? Не компилируется?


Название: Re: Ресурсы
Отправлено: kolob от Февраль 11, 2011, 18:45
Файл не открывается


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 11, 2011, 19:19
Давай дальше поиграем в телепатов. Какую ошибку выдает?


Название: Re: Ресурсы
Отправлено: kolob от Февраль 11, 2011, 19:33
Извините. Ошибку не знаю какую выдает. Через qDebug можно узнать ошибку?


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 11, 2011, 19:41
bool QFileInfo::exists () const что на него говорит?


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 11, 2011, 20:34
Попробуй сделать QFile fille("qrc:res/файл_ресурс.txt"); надеюсь, кириллица только для примера?


Название: Re: Ресурсы
Отправлено: kolob от Февраль 11, 2011, 20:42
Да, для примера. Хорошо попробую.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 13, 2011, 13:56
Цитировать
bool QFileInfo::exists () const что на него говорит?
возвращает false
Цитировать
QFile fille("qrc:res/файл_ресурс.txt");
не открывает.


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 13, 2011, 15:30
QFile fille(":/res/файл_ресурс.txt"); попробуй.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 13, 2011, 18:44
Цитировать
QFile fille(":/res/файл_ресурс.txt"); попробуй.
И так тоже не получается.


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 14, 2011, 08:44
Ну, давай минимальный компилябельный пример.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 14, 2011, 09:16
Файл ресурсов:
Код:
<!DOCTYPE RCC><RCC version='1.0'>
<qresource>
<file>res/file.txt</file>
</qresource>
</RCC>

Файл *.pro:
Код:
TEMPLATE	= app
LANGUAGE = C++
INCLUDEPATH += .
HEADERS += mainform.h \
SOURCES += main.cpp \
mainform.cpp
FORMS = mainformbase.ui
IMAGES = images/1.png \
images/1.png \
images/icon.png
RC_FILE = project.rc
RESOURCES += project.qrc

Вот как пытаюсь открыть:
Код:
QFile file(":/res/operator.txt");
if(!file.open(IO_WriteOnly))
    QMessageBox::warning(this, tr("Error"), tr("Error"));
else
{
QTextStream in(&file);
QString str;
while(!in.atEnd())
QMessageBox::warning(this, tr(""), tr("%1").arg(str));
}
if(QFileInfo(":/res/operator.txt").exists())
QMessageBox::warning(this, tr(""), tr("Ok"));
else
QMessageBox::warning(this, tr(""), tr("Error"));


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 14, 2011, 10:28
Фигасе. Ты пытаешься открыть на запись файл из ресурсов? Суров ты, братец. ;)


Название: Re: Ресурсы
Отправлено: kolob от Февраль 14, 2011, 10:39
Вот черт, я тупиццццааа!!! ;D Вот бл невнимательность.


Название: Re: Ресурсы
Отправлено: Пантер от Февраль 14, 2011, 10:40
На всякий случай, вот примерчик для тебя накидал.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 14, 2011, 17:45
Да, что то у меня не то...

Вот ошибка
Цитировать
QFile::open: Invalid filename specified
Error

А то что у меня Qt 3 это не как не влияет. Я что то в ассистенте ни одного упоминания про файлы *.qrc не нашел.

-----------------------------
Изменил Ваш код с 4 на 3ю и вот она ошибка такая же как у меня!


Название: Re: Ресурсы
Отправлено: GreatSnake от Февраль 14, 2011, 17:50
Цитировать
А то что у меня Qt 3 это не как не влияет.
Что же ты над Пантер издеваешься?  :)
В Qt3 нет такой поддержки.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 14, 2011, 19:12
ну извините меня тогда,особенно Пандер. Зато какой опыт на будущее получил.А как же быть тогда в 3й.подскажите,очень очень надо:(


Название: Re: Ресурсы
Отправлено: GreatSnake от Февраль 14, 2011, 19:31
Ну дык возьми и вкомпили свой *.txt. Делов-то.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 14, 2011, 19:42
что то типа include ''file.txt'' ? Или как? Я уже запутал.


Название: Re: Ресурсы
Отправлено: GreatSnake от Февраль 14, 2011, 19:50
Простым include не получится.
Нужно написать скрипт/программку, которая из этого файла сделала бы файл с массивом символов. Типа
static const char txt[] = { '\x41', '\x42', '\x43' };
И уже это сконвертнутый файл инклюдить.


Название: Re: Ресурсы
Отправлено: kolob от Февраль 16, 2011, 23:17
Всем огромное спасибо! Все получилось. :)