Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Fregloin от Декабрь 01, 2011, 18:34



Название: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 01, 2011, 18:34
Столкнулся с такой штукой: в проекте есть файл ресурсов, в котором хранятся иконки.
эти иконки в формате png. Иконки отображаются в кнопках и менюшках. В винде все работает и отображается.
В линуксе менюшки и кнопки отображаются без иконок. В чем загвостка?


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


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Aluman от Декабрь 02, 2011, 08:49
Столкнулся с такой штукой: в проекте есть файл ресурсов, в котором хранятся иконки.
эти иконки в формате png. Иконки отображаются в кнопках и менюшках. В винде все работает и отображается.
В линуксе менюшки и кнопки отображаются без иконок. В чем загвостка?
  Попробуй запустить от рута, должны появиться.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Пантер от Декабрь 02, 2011, 09:02
При чем тут рут?


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Aluman от Декабрь 02, 2011, 09:08
При чем тут рут?
Если честно без понятия, под linux я пишу редко, но когда-то такое было и под рутом почему-то иконки были ???

Если поможет, то будет дополнительная информация к размышлению  ;)


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Rem Norton от Декабрь 02, 2011, 10:41
Столкнулся с такой штукой: в проекте есть файл ресурсов, в котором хранятся иконки.
эти иконки в формате png. Иконки отображаются в кнопках и менюшках. В винде все работает и отображается.
В линуксе менюшки и кнопки отображаются без иконок. В чем загвостка?
Чаще всего в регистре. Дело в том, что если например файл "Image.PNG" лежит в секции "Files", то под виндой обращение ":/Files/image.png" сработает нормально, а вот Линукс файл не найдет.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: GreatSnake от Декабрь 02, 2011, 11:02
Чаще всего в регистре. Дело в том, что если например файл "Image.PNG" лежит в секции "Files", то под виндой обращение ":/Files/image.png" сработает нормально, а вот Линукс файл не найдет.
Имхо, такое предположение имеет смысл в случае файловой системы, но никак не ресурсов.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 02, 2011, 12:12
Иконки находятся в ресурсах. Все имена написаны маленькими буквами. Раньше замечал, что если не указывать расширение, то в винде работало, а в линах нет.
Прописал везде расширения, но ничего не изменилось. Картинок нет вообще никаких. Рерурсы иконок кнопкам присваиваю через интспекор объектов, а менюшкам через QIcon(":/icons/imagexxx.png");


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 02, 2011, 12:14
да, Qt установлен через менджер пакетов. Ось убунта 11.10 (хотя и до обновления было тоже самое).


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: BuRn от Декабрь 02, 2011, 12:23
а ничего на libpng не гонит ?сообщений Qt никаких не выдает ?


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 02, 2011, 17:39
нет, никаких сообщений в консоли нет...
может смысл пересобрать qt с сорцов?


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: panAlexey от Декабрь 03, 2011, 12:39
может смысл пересобрать qt с сорцов?
Обычно помогает.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Пантер от Декабрь 05, 2011, 09:08
нет, никаких сообщений в консоли нет...
может смысл пересобрать qt с сорцов?
Под Линухом не стоит. А в других программах то же самое? Приложишь свой проект сюда, может, в нем ошибка.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 05, 2011, 15:38
В винде все работает, под маком собирал, тоже вроде были, а в линуксе тупо не рисуется. Возможно проблема в png?
Придётся все пережать под другой формат.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Rem Norton от Декабрь 05, 2011, 17:25
В винде все работает, под маком собирал, тоже вроде были, а в линуксе тупо не рисуется. Возможно проблема в png?
Придётся все пережать под другой формат.
у меня 100500 проектов с иконками в png и в Линухе все рисуется. а если учесть, что я не один тут такой, то смело можно предположить, что png тут нипричом. Пантер правильно написал, ибо ставить диагноз не глядя на проект = лечить геморой по фотографии. Или проект представляет из себя страшнейшую военную тайну?  ;D


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 07, 2011, 16:35
вот данный фрагмент кода в виндовсе работает, в линуксе нет:
Код:
QImage  leftBootImage(":/boot_left_small.png");
QImage  rightBootImage(":/boot_right_small.png");

QSectionBoot::QSectionBoot(bool Init, QGraphicsItem *parent)
    :QRailItem(Init, parent)
{
    fshowBoot = true;
    fbootImage = &leftBootImage;
}

пришлось принудительно делать load(":/boot_left_small.png") и load(":/boot_right_small.png")


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: GreatSnake от Декабрь 07, 2011, 16:41
вот данный фрагмент кода в виндовсе работает, в линуксе нет:
Код:
QImage  leftBootImage(":/boot_left_small.png");
QImage  rightBootImage(":/boot_right_small.png");
пришлось принудительно делать load(":/boot_left_small.png") и load(":/boot_right_small.png")
А кто вам сказал, что это вообще должно работать так как нужно? И почему Qt-resource-managemet-system должна была проинициализироваться раньше чем leftBootImage или rightBootImage ???

Вывод: порядок статической инициализации неопределённый.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Пантер от Декабрь 07, 2011, 16:42
Мде. Вот так либастрал засбоил, а ошибка-то вон она где. :)


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 07, 2011, 16:49
ок, а как сделать так, что бы обращаться к глобальным ресурсам?
т.е. есть объект на сцене, он может отображать картинку, всего может принимать два значения и соотвественно рисовать или одну картинку или другую.
таких объектов на сцене может быть сколь угодно много.
и я решил, что нет резона хранить в каждом объекте копию картинки, а хранить только указатель на нее.
но походу не сработало...


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: GreatSnake от Декабрь 07, 2011, 16:53
Где-нибудь в конструкторе сделай:
Код
C++ (Qt)
if( leftBootImage.isNull() )
  leftBootImage.load(":/boot_left_small.png");
 


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 07, 2011, 17:13
Код:
QAction     *   action = contextMenu.addAction(QIcon(":/resources/icons/boot.png"),trUtf8("Башмаки"),this,SLOT(requestForShowBootForSection()));
В винде рисуется как надо, в линуксе в меню ничего не отображается, только текст.
вот фрагмент файла ресурсов
Код:
<RCC>
    <qresource prefix="/">
        <file alias="agree.png">resources/icons/agree.png</file>
        <file alias="align_bottom.png">resources/icons/align_bottom.png</file>
        <file alias="align_center.png">resources/icons/align_center.png</file>
        <file alias="align_left.png">resources/icons/align_left.png</file>
        <file alias="align_middle.png">resources/icons/align_middle.png</file>
        <file alias="align_right.png">resources/icons/align_right.png</file>
        <file alias="align_top.png">resources/icons/align_top.png</file>
        <file alias="anchor.png">resources/icons/anchor.png</file>
        <file alias="anchor_after.png">resources/icons/anchor_after.png</file>
        <file alias="anchor_before.png">resources/icons/anchor_before.png</file>


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: GreatSnake от Декабрь 07, 2011, 18:12
Показывай как инициализишь ресурсы.


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: Fregloin от Декабрь 08, 2011, 11:23
в смысле их еще надо вручную инициализировать?
я думал что будет достаточно сделать QIcon(":/resource/name.png")


Название: Re: Ресурсы иконок не отображаются в линуксе
Отправлено: GreatSnake от Декабрь 08, 2011, 12:37
в смысле их еще надо вручную инициализировать?
я думал что будет достаточно сделать QIcon(":/resource/name.png")
На самом деле да, должно хватить этого. Инициализить их нужно через Q_INIT_RESOURCE, если qrc_*.o* линкуется с библиотекой.