crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Иконки в приложении и QIcon::fromTheme()
RazrFalcon
  опции профиля:
сообщение 17.11.2011, 9:33
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Имеем:
actionConfig->setIcon(QIcon::fromTheme("configure", QIcon(":/configure.svgz"))); // из доков
Вроде все верно. Если я на лине - то будет грузится первая иконка, если на винде - 2-я.
Но у меня в консоль сыпятся ошибки если я использую следующее:
win32:RESOURCES   += icons/icons.qrc
Cannot open file ':/configure.svgz', because: Unknown error
То есть он не может найти иконки которые я пихаю в ресурсы. Но мне то не нужны они в ресурсах на линуксе. Как только убираю win32 - сразу все работает.
Как решить? делать ifdef для иконок как то не хочется...

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 21.11.2011, 15:03
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 17.11.2011, 10:33) *
Имеем:
actionConfig->setIcon(QIcon::fromTheme("configure", QIcon(":/configure.svgz"))); // из доков
Вроде все верно. Если я на лине - то будет грузится первая иконка, если на винде - 2-я.
Но у меня в консоль сыпятся ошибки если я использую следующее:
win32:RESOURCES   += icons/icons.qrc
Cannot open file ':/configure.svgz', because: Unknown error
То есть он не может найти иконки которые я пихаю в ресурсы. Но мне то не нужны они в ресурсах на линуксе. Как только убираю win32 - сразу все работает.
Как решить? делать ifdef для иконок как то не хочется...


Как я понял ошибки сыпятся в линухе. Так и правильно. Вначале подготавливаются все аргуметны функции, т.е. создается QString("configure") и QIcon(":/configure.svgz"), а потом они передаются в QIcon::fromTheme.
Перепиши как
QIcon icon = QIcon::fromTheme("configure");
if (icon.isNull())
    icon = QIcon(":/configure.svgz")
actionConfig->setIcon(icon);

Или храни запасную иконку для обеих систем, к сожалению, в линухе нельзя быть уверенным что найдется иконка из темы. Например, если запустить программу не в Гноме и не в КДЕ, QIcon::IconTheme возвращает пустое имя, и иконки не находятся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 20:40