С помощью дизайнера создаю форму, добавляю для нее файл ресурсов, в которых запихиваю картинки.
Затем эти самые картинки использую в виджетах формы.
Как бы я не использовал ресурсы (компилировал в бинарник приложения, либо подключал как внешние ресурсы), на другой машине всегда картинки пропадают. На той где компилируется - все ок, а стоит попробовать под другой ОС - так обязательно проблема.
Никто не сталкивался?
Покажи файл ресурсов.
К чему ты цепляешь картинки и каким образом?
Какая версия Qt и компилятор?
Поподробней опиши свои действия...
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.
уменя была такая проблема:
скомпилил на виндовозе, картинки задуманы читатся при запуске приги из предопределенного каталога, если каталог таскаю с бинарем по виндовозовским тачкам, то все путем, пересобрал в Лине, картинок нет, путь был указан к ним так:
p_pix->load("pics/well_prsr.png");
p_pix->load("./pics/well_prsr.png");
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
AD22,
Нельзя абсолютный путь указывать, это большие грабли, либо относительно приложения, либо с ситемными переменными (актуально для линуха)
groove,
Вообщем попробывал я твою прогу посмотреть в профилеровщике, ня своей машине (есть Qt) и на VMWare (нет Qt), сравнил логи, на моей машине в логе есть такие строчки:
БЛИН, я тут открытие совершил, у менято тоже проблема, svg-рисунки нечитаются, jpeg неиспользую, png читаются нормально
-- вобщем новая тема: http://www.forum.crossplatform.ru/index.php?showtopic=468
groove, твое заработало, после некоторых экспериментов смотри http://www.forum.crossplatform.ru/index.php?showtopic=485&view=findpost&p=2282
Ну вот, а теперь по всей видимости нужно собирать и писать общее описание, чтобы не было мороки при перечитке...
просьба: напишите точно, как надо путь указывать. Относительно чего, нужно ли или не нужно таскать сами картинки с собой? Указать путь к dll плагинов, это-то сделал. Заранее благодарю!
Litkevich Yuriy, есть время сделать описание как и что, просто ты вроде этим заморочился, соответственно и тему лучше знаешь.
AD, ну если тебе горит, именно распространение программы, пользуй пока http://www.forum.crossplatform.ru/index.php?showtopic=485&view=findpost&p=2305, у меня сечас напряг со временем
Кстати есть еще один вопрос: есть dll-файлы под .jpg, .gif, .tiff, .svg; какой из них для .png использовать? Тот, что под .svg?
Хочу просто описать проблему: на счет dll-файлов и их использования все более-менее понятно. Непонятно как присобачить картинки так, чтобы они видны были. По всем учебникам выходит так, что если exe-file (назовем, для простоты, tlv.exe) лежит, предположим, в D:\QtEx\tlv.exe, то картинки лежат по адресу D:\QtEx\Images\*.png, которые заносятся в *.qrc файл, а затем вызываются вот под таким адресом :/images/*.png! Но даже сделав так, как указано в справочниках на других машинах ничего не отображается. Надо еще создавать .rcc файл? Для меня это загадка......
с 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);
да, а какая разница, все равно еще dll'ки таскать, папкой больше папкой меньше.
ну мне еще mingwm10.dll, т.к. я MinGW пользую
Блин, не работают эти png-картинки, хоть убей. Все перепробовал. Пока ничего не получилось, чтобы они отображались!
Сделал Q_INIT_RESOURCE(tlv_resource). Все-равно пока что на других компах не отображается!
расскажи как ты распространяешь свою софтину, что куда ставишь?
Все никак не доберусь опробовать твою проблему до конца.
AD, где лежит твой exe'шник?
где лежат Qt'явые dll'ки?
данный каталог в переменной PATH числится?
картинки у тебя в png, а то я забыл уже?
попробуй забить переменную PATH
AD, ты можешь дать какой нибудь исходник, простой?
Который у тебя не получается распространять, я бы попробывал у себя скомпилить и проверить.
---
вот моё:
wellwgt.zip ( 19.18 килобайт )
: 297
выглядеть должно так:
распространяю так:
Еще вот от Макса Шлее пример с файлом http://lit-uriy.narod.ru/temp/Window.zip, у меня распространяется без проблем, так:
Можешь их удалить, это файлы вектрной графики, из них я делал PNG, т.к. при масштабировании векторной графики качество картинки не меняется.
Проблема с отображением картинок самоликвидировалась! Т.Е. картинки теперь отображаются! В чем фокус не очень понял, но картинки без особых помех отображаются на всех компьютерах!
Тэкс, а как решил то?
Дык, он и сам не понял
почему в висуал студии при попытке задать windowicon появляется диалог в котором ничего нельзя сделать кроме как вручную ввести имя файла? (там есть 2 компонента, один из которых подписан "Preview"). При установке там имени файла иконка не появляется, а если в коде setWindowIcon(QIcon("1.png"));, то появляется.
a как qdialog установить иконку?
это вопрос вообще
windowIcon : QIcon
This property holds the widget's icon.
This property only makes sense for windows. Видимо изза этого не устанавливается (хотя диалог и есть отдельное окно)
kuler, может я и не понял в чем проблема, но вот этот тест работает, я его переделал из http://www.forum.crossplatform.ru/index.php?showtopic=640&view=findpost&p=3672 под использование QDialog
Qt_Ui_test_3.zip ( 46.31 килобайт )
: 192
Litkevich Yuriy,
чото я не понял как там присоединена иконка приложения
главное чтобы ты с иконкой для диалога разобрался, а если тябя интерисует иконка exe'шника пока он не запущен, то задавай в указаной мною теме, если ты ее вообще прочитал.
так я и спрашивал про иконку, которая на заголовке окна
да, просмотрел все исходники и не увидел где связывается myappico.ico
kuler, прости пожалуйста, я не тот пример залил
вот в этом
Qt_Ui_test_5.zip ( 15.02 килобайт )
: 137
, работает функция
setWindowIcon(QIcon(":/ico/images/myappico.png"));
Litkevich Yuriy, ничо, но все равно не понятно как иконка там устанавливается
ну вызывается эта функция, в нее передается путь к иконке, если пут начинается с двоеточия, значит из ресурсов которые вкопилены в бинарь, а они все перечислены в qrc-файле, он в свою очердь записан в pro-файл.
this -> setWindowState(windowState())
Попробуй чуть похимичить с этим. Что-то я не помню точной инструкции. Но могу тебе из справки дать инфу:
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)