Hatred's Log Place

DON'T PANIC!

Jun 22, 2012 - 1 minute read - programming c++

Qt4 и стандартные иконки

Бывает необходимость в вашем приложении отобразить ту или иную стандартную системную иконку, типа значка диска CD-ROM. Можно, конечно, создавать свой ресурсный файл и ложить иконки туда, но это будет выглядеть несуразно, особенно при смене различных тем оформления. Задаёмся резонным вопросом: а как бы использовать то, что уже есть в Qt и/или системе?

Вариант 1: стандартные ресурсы Qt4

Про это написано тут: http://www.qtcentre.org/wiki/index.php?title=Embedded_resources

Помимо списка, приведён и код, которым можно получить список самостоятельно. Так же показан пример, как создавать изображение из ресурса:

QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png");
QIcon   icon(":/trolltech/styles/commonstyle/images/up-128.png");

Вариант 2: стандартные иконки при помощи QStyle

Сылки по теме:

  1. http://doc.trolltech.com/latest/qstyle.html#standardIcon
  2. http://doc.trolltech.com/latest/qstyle.html#StandardPixmap-enum

Собственно что нам нужно, это метод класса QStyle:

QIcon QStyle::standardIcon ( StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) const

Иконки опеределяются перечислением StandardPixmap

Вариант 3: использование иконок темы оформления

Тут, скорее всего, всё будет очень сильно зависеть от платформы. Но в общем случае, нам нужен такой вызов:

QIcon icon(QIcon::fromTheme(QString::fromUtf8("icon-name")));

icon-name имя иконки, возможные значения, стандартные, для Linux можно узнать тут: http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html