С помощью дизайнера создаю форму, добавляю для нее файл ресурсов, в которых запихиваю картинки.
Затем эти самые картинки использую в виджетах формы.
Как бы я не использовал ресурсы (компилировал в бинарник приложения, либо подключал как внешние ресурсы), на другой машине всегда картинки пропадают. На той где компилируется - все ок, а стоит попробовать под другой ОС - так обязательно проблема.
Никто не сталкивался?
Покажи файл ресурсов.
К чему ты цепляешь картинки и каким образом?
Какая версия Qt и компилятор?
Поподробней опиши свои действия...
Litkevich Yuriy
25.2.2008, 0:30
groove, Не забудь что путь к ресурсам начинается с двоеточия:
":/pics.png"
Вот тестовый проект:
http://ifolder.ru/5502423Ресурсы берутся из внешнего файла. Если запускать на машине, где нет Qt, тогда картинка на форме отображена не будет, если запускать там же где и компилировалось, то все OK.
Для запуска на чистой машине потребуются файлы: mingwm10.dll, QtCore4.dll, QtGui4.dll.
Версия Qt: 4.3.2, OpenSouce Edition. Бря сборку TrollTech.
Версия MinGW: MinGW-3.2.0.
Litkevich Yuriy
26.2.2008, 18:31
уменя была такая проблема:
скомпилил на виндовозе, картинки задуманы читатся при запуске приги из предопределенного каталога, если каталог таскаю с бинарем по виндовозовским тачкам, то все путем, пересобрал в Лине, картинок нет, путь был указан к ним так:
p_pix->load("pics/well_prsr.png");
зделал так:
p_pix->load("./pics/well_prsr.png");
все за работало, и в Лине и Виндовозе
Цитата(Litkevich Yuriy @ 26.2.2008, 18:31)
уменя была такая проблема:
скомпилил на виндовозе, картинки задуманы читатся при запуске приги из предопределенного каталога, если каталог таскаю с бинарем по виндовозовским тачкам, то все путем, пересобрал в Лине, картинок нет, путь был указан к ним так:
p_pix->load("pics/well_prsr.png");
зделал так:
p_pix->load("./pics/well_prsr.png");
все за работало, и в Лине и Виндовозе
Тут в пределах одной ОС нифига не работает.
Та же проблема. Не отображаются картинки, если запускаю на другой машине. Путь указываю, чтобы отображалось полный, т.е., например, D:/Projects/Src/TransasLogViewer/Images/open.png.
На той машине, что компилю, все отображаются.
P.S. exe-файл лежит вот здесь D:\Projects\Win32\Bin\Release\TransasLogViewer\TLV.exe,
либо D:\Projects\Win32\Bin\Debug\TransasLogViewer\TLV.exe
Litkevich Yuriy
4.3.2008, 13:26
AD22,
Нельзя абсолютный путь указывать, это большие грабли, либо относительно приложения, либо с ситемными переменными (актуально для линуха)
groove,
Вообщем попробывал я твою прогу посмотреть в профилеровщике, ня своей машине (есть Qt) и на VMWare (нет Qt), сравнил логи, на моей машине в логе есть такие строчки:
Цитата
LoadLibraryW("F:/Qt/4.3.2/plugins/imageformats/qjpeg4.dll") called from "QTCORE4.DLL" at address 0x101134F5.
Loaded "QJPEG4.DLL" at address 0x017C0000. Successfully hooked module.
DllMain(0x017C0000, DLL_PROCESS_ATTACH, 0x00000000) in "QJPEG4.DLL" called.
DllMain(0x017C0000, DLL_PROCESS_ATTACH, 0x00000000) in "QJPEG4.DLL" returned 1 (0x1).
LoadLibraryW("F:/Qt/4.3.2/plugins/imageformats/qjpeg4.dll") returned 0x017C0000.
GetProcAddress(0x017C0000 [QJPEG4.DLL], "qt_plugin_instance") called from "QTCORE4.DLL" at address 0x101143F5 and returned 0x017C13B0.
а на другой машине в логе нет таких строчек, положил
qjpeg4.dll в каталог с бинарем, эфект тотже, ни картинки ни таких строчек в логе.
Надо думать как это плагин прицепить.
Litkevich Yuriy
4.3.2008, 15:57
БЛИН, я тут открытие совершил, у менято тоже проблема, svg-рисунки нечитаются, jpeg неиспользую, png читаются нормально
-- вобщем новая тема:
Как распространять, программы использующие Qt-плагины?
Litkevich Yuriy
8.3.2008, 22:21
groove, твое заработало, после некоторых экспериментов смотри
пост
Цитата(groove @ 26.2.2008, 11:52)
без проблем все показало...
Litkevich Yuriy
12.3.2008, 1:54
Цитата(trdm @ 12.3.2008, 4:17)
без проблем все показало...
на сырой тачке без Qt'ей?
Ну вот, а теперь по всей видимости нужно собирать и писать общее описание, чтобы не было мороки при перечитке...
просьба: напишите точно, как надо путь указывать. Относительно чего, нужно ли или не нужно таскать сами картинки с собой? Указать путь к dll плагинов, это-то сделал. Заранее благодарю!
Litkevich Yuriy, есть время сделать описание как и что, просто ты вроде этим заморочился, соответственно и тему лучше знаешь.
Цитата(ViGOur @ 12.3.2008, 11:03)
Litkevich Yuriy, есть время сделать описание как и что, просто ты вроде этим заморочился, соответственно и тему лучше знаешь.
Мне все-равно кто, но поможете? Надо ли использовать void Q_INIT_RESOURCE ( name ) для динамической сборки? Вообще как сделать-то?
Litkevich Yuriy
12.3.2008, 12:59
Цитата(ViGOur @ 12.3.2008, 14:03)
есть время сделать описание
у меня еще четкого представления не сложилось, а в срочном порядке искал путь по причине того, что через неделю надо будет шефу показать что-нибудь, бум Qt'я использовать или будем продолжать пользовать Builder 5.
Соответственно пока использую вариант тащить кучу dll'ок на сырую машину, сейчас другой головняк появился.
Описание пока четкого нет только наброски.
Litkevich Yuriy
12.3.2008, 13:01
AD, ну если тебе горит, именно распространение программы, пользуй пока
вариант 2 с переменной PATH, у меня сечас напряг со временем
Кстати есть еще один вопрос: есть dll-файлы под .jpg, .gif, .tiff, .svg; какой из них для .png использовать? Тот, что под .svg?
Хочу просто описать проблему: на счет dll-файлов и их использования все более-менее понятно. Непонятно как присобачить картинки так, чтобы они видны были. По всем учебникам выходит так, что если exe-file (назовем, для простоты, tlv.exe) лежит, предположим, в D:\QtEx\tlv.exe, то картинки лежат по адресу D:\QtEx\Images\*.png, которые заносятся в *.qrc файл, а затем вызываются вот под таким адресом :/images/*.png! Но даже сделав так, как указано в справочниках на других машинах ничего не отображается.
Надо еще создавать .rcc файл? Для меня это загадка......
Litkevich Yuriy
13.3.2008, 17:44
с png можешь не беспокоится он всегда работает, он внутри Qt'ей
Это единственная, видимо, вещь с которой нет проблем.
Я делал так и это всегда работает, если конечно прога вообще запустилась:
// Кнопки
QPushButton *btnStart = new QPushButton;
QPushButton *btnInfo = new QPushButton;
QPushButton *btnStop = new QPushButton;
// Настраиваем кнопки
btnStart->setMaximumSize(btn24);
btnStart->setMinimumSize(btn24);
btnInfo->setMaximumSize(btn24);
btnInfo->setMinimumSize(btn24);
btnStop->setMaximumSize(btn24);
btnStop->setMinimumSize(btn24);
// Устанавливаем иконки на кнопки
btnStart->setIcon(QIcon(QString::fromUtf8("./pics/24px_On.png")));
btnStart->setIconSize(icon24);
btnStart->setFlat(true);
btnInfo->setIcon(QIcon(QString::fromUtf8("./pics/24px_Info.png")));
btnInfo->setIconSize(icon24);
btnInfo->setFlat(true);
btnStop->setIcon(QIcon(QString::fromUtf8("./pics/24px_Off.png")));
btnStop->setIconSize(icon24);
btnStop->setFlat(true);
т.е. неиспользовал никаких файлов ресурсов,
прога лежит в каталоге Foo,
картинки в каталоге Foo/pics/
загружаются во время выполнения
Цитата(Litkevich Yuriy @ 13.3.2008, 17:44)
с png можешь не беспокоится он всегда работает, он внутри Qt'ей
Это единственная, видимо, вещь с которой нет проблем.
т.е. неиспользовал никаких файлов ресурсов,
прога лежит в каталоге Foo,
картинки в каталоге Foo/pics/
загружаются во время выполнения
Т.е. картинки таскаешь с собой?
Litkevich Yuriy
13.3.2008, 18:30
да, а какая разница, все равно еще dll'ки таскать, папкой больше папкой меньше.
Цитата(Litkevich Yuriy @ 13.3.2008, 18:30)
да, а какая разница, все равно еще dll'ки таскать, папкой больше папкой меньше.
Какие dll, кроме необходимых для запуска, т.е. QtGui4, QtCore4?
Litkevich Yuriy
13.3.2008, 19:01
ну мне еще mingwm10.dll, т.к. я MinGW пользую
Блин, не работают эти png-картинки, хоть убей. Все перепробовал. Пока ничего не получилось, чтобы они отображались!
Сделал Q_INIT_RESOURCE(tlv_resource). Все-равно пока что на других компах не отображается!
Litkevich Yuriy
3.4.2008, 16:35
расскажи как ты распространяешь свою софтину, что куда ставишь?
Цитата(Litkevich Yuriy @ 3.4.2008, 17:35)
расскажи как ты распространяешь свою софтину, что куда ставишь?
Картинки png-формата. В той же папочке, что и exe-file есть папка images, где и лежат эти картинки. В коде есть qrc - файл, где прописаны эти картинки! Еще что-то нужно для этих png?
Все никак не доберусь опробовать твою проблему до конца.
Litkevich Yuriy
3.4.2008, 17:26
AD, где лежит твой exe'шник?
где лежат Qt'явые dll'ки?
Цитата(Litkevich Yuriy @ 3.4.2008, 18:26)
AD, где лежит твой exe'шник?
где лежат Qt'явые dll'ки?
все dll лежaт в одной папке вместе с exe-file! Название папки что-ли дать? Не понимаю, какой ответ хочешь получить, извини?
Litkevich Yuriy
3.4.2008, 18:13
данный каталог в переменной PATH числится?
картинки у тебя в png, а то я забыл уже?
Цитата(Litkevich Yuriy @ 3.4.2008, 19:13)
данный каталог в переменной PATH числится?
картинки у тебя в png, а то я забыл уже?
А он долже обязательно числится??? Картинки в png!!!
Litkevich Yuriy
3.4.2008, 19:10
попробуй забить переменную PATH
Цитата(Litkevich Yuriy @ 3.4.2008, 20:10)
попробуй забить переменную PATH
Думаю это не решение.
Попробую сварганитть пример работы с картинками, но как скоро не знаю, сами видите, не всегда время есть.
Litkevich Yuriy
4.4.2008, 4:23
AD, ты можешь дать какой нибудь исходник, простой?
Который у тебя не получается распространять, я бы попробывал у себя скомпилить и проверить.
---
вот моё:
Нажмите для просмотра прикрепленного файлавыглядеть должно так:
распространяю так:
Цитата
pics/
12-Wellwgt.exe
mingwm10.dll
QtCore4.dll
QtGui4.dll
mingwm10.dll, нужен т.к. компилирую с помощью MinGW32, в каталоге pics, лежат png-рисунки, которые на лету подгружаются.
т.е. если это у тебя будет работать, значит надо с файлами ресурсов разбираться.
Litkevich Yuriy
4.4.2008, 5:15
Еще вот от Макса Шлее пример с файлом
qrc, у меня распространяется без проблем, так:
Цитата
Window.exe
mingwm10.dll
QtCore4.dll
QtGui4.dll
Цитата(Litkevich Yuriy @ 4.4.2008, 5:23)
AD, ты можешь дать какой нибудь исходник, простой?
Который у тебя не получается распространять, я бы попробывал у себя скомпилить и проверить.
---
вот моё:
Нажмите для просмотра прикрепленного файлавыглядеть должно так:
распространяю так:
Цитата
pics/
12-Wellwgt.exe
mingwm10.dll
QtCore4.dll
QtGui4.dll
mingwm10.dll, нужен т.к. компилирую с помощью MinGW32, в каталоге pics, лежат png-рисунки, которые на лету подгружаются.
т.е. если это у тебя будет работать, значит надо с файлами ресурсов разбираться.
Попробовал твой пример. Все заработало в примере. Заметил, что в папочке pics помимо png-картинок еще какие-то svg-файлы? Что это за файлы? Как их получить?
Litkevich Yuriy
4.4.2008, 15:41
Можешь их удалить, это файлы вектрной графики, из них я делал PNG, т.к. при масштабировании векторной графики качество картинки не меняется.
Проблема с отображением картинок самоликвидировалась! Т.Е. картинки теперь отображаются! В чем фокус не очень понял, но картинки без особых помех отображаются на всех компьютерах!
Тэкс, а как решил то?
Litkevich Yuriy
6.5.2008, 11:52
Дык, он и сам не понял
почему в висуал студии при попытке задать windowicon появляется диалог в котором ничего нельзя сделать кроме как вручную ввести имя файла? (там есть 2 компонента, один из которых подписан "Preview"). При установке там имени файла иконка не появляется, а если в коде setWindowIcon(QIcon("1.png"));, то появляется.
a как qdialog установить иконку?
Litkevich Yuriy
13.11.2008, 12:23
Цитата(kuler @ 13.11.2008, 15:02)
a как qdialog установить иконку?
что-то я не понял вопроса. Если он тоже применительно к студии, лучше выделить в отдельную тему, я думаю она быстрее людям на глаза попадется.
это вопрос вообще
windowIcon : QIcon
This property holds the widget's icon.
This property only makes sense for windows. Видимо изза этого не устанавливается (хотя диалог и есть отдельное окно)
Litkevich Yuriy
13.11.2008, 13:47
kuler, может я и не понял в чем проблема, но вот этот тест работает, я его переделал из
этого под использование QDialog
Нажмите для просмотра прикрепленного файла
Litkevich Yuriy,
чото я не понял как там присоединена иконка приложения
Litkevich Yuriy
13.11.2008, 14:20
главное чтобы ты с иконкой для диалога разобрался, а если тябя интерисует иконка exe'шника пока он не запущен, то задавай в указаной мною теме, если ты ее вообще прочитал.
так я и спрашивал про иконку, которая на заголовке окна
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.