Цитата(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 возвращает пустое имя, и иконки не находятся.