Как работают значки "тема" в Qt Creator Designer?

когда я создаю кнопку "Command link" (QCommandLinkButton) Он имеет относительно хороший значок с зеленой стрелкой.

image description

Я хотел бы посмотреть, какие еще хорошие значки Я могу выбрать. Когда я пытаюсь изменить значок, [Theme] появляется вместо пути или некоторого диалога выбора GUI:

image description

Я также заметил контекстное меню:

image description

когда я нажимаю установить значок из темы, снова ожидая некоторого GUI список выбора, я получаю только текстовое поле:

image description

то, что я представил:

image description

где список значков, из которых была взята зеленая стрелка?

2 ответов


Я не думаю, что это функция, которую вы хотите использовать. Название "тема" там соответствует QIcon::fromTheme функциональность, которая использует значки, названные в соответствии со спецификацией FDO

и они на самом деле не поддерживается платформы non-FDO (Windows, Mac,...) если вы не развернете свои собственные файлы тем.


теперь некоторые иконки поставляются в комплекте с самой Qt, я не знаю как установить их из конструктора, но из кода, Вы можете использовать QStyle::standardIcon:

 widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));

если значок, который вам нужен, не предоставляется Qt, вам нужно будет его отправить. В этом случае Системный Ресурс удобный путь связать его вместе с вашим выполнимый.


последнее, но не менее важное, с точки зрения UX вы должны рассмотреть возможность использования QToolButtonS, Если вы действительно не создаете Vista-подобный мастер.


QIcon::fromTheme работает в определенных условиях.

если он может найти его в QIcon::themeSearchPaths() на QIcon::themeName()

если нужного значка нет, Qt Designer не сможет выполнить ни одну из тем from с именем icons.

но... если вы проверите свою целевую систему для путей поиска темы и установите имя темы, У вас будет больше шансов на успех.

пример

в linux я хотел получить плюс и минус икона.

нашел list-add.png и list-remove.png соответствующий законопроект.

https://github.com/GNOME/adwaita-icon-theme/tree/master/Adwaita/16x16/actions

http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

Я сделал местоположение в моей системе и нашел следующее:

/usr/share/icons/gnome/16x16/actions/list-add.png
...
/usr/share/icons/gnome/32x32/actions/list-add.png
/usr/share/icons/gnome/scalable/actions/list-add.svg
/usr/share/icons/oxygen/16x16/actions/list-add.png
...

принуждение с на QIcon::fromTheme

найдите значок в файловой системе:

ui->toolButton->setIcon(QIcon::fromTheme("list-add",
    QIcon("/usr/share/icons/gnome/16x16/actions/list-add.png")));

найдите значок в системе ресурсов qt... Добавьте значок в файл qrc в вашей сборке, а затем ссылайтесь на его путь.

ui->toolButton->setIcon(QIcon::fromTheme("list-add",
    QIcon(":/list-add.png")));

переопределение текущей темы значков

qDebug() << "themeSearchPaths:" << QIcon::themeSearchPaths() << QIcon::themeName();

// themeSearchPaths: ("/usr/local/share/icons", "/usr/share/icons", ":/icons") "hicolor"

тема по умолчанию для системы и для целевой машины развертывания, вероятно, не имела значков, которые я хотел... но установленная тема рабочего стола gnome или oxygen icon почти всегда есть...

QIcon::setThemeName("oxygen");

обратите внимание, что вы не увидите предварительный просмотр в Qt Designer обязательно, потому что он не устанавливает тему до выполнения вашего кода.

в библиотеке значков gnome есть 1100 + значков. Вот один список:

https://gist.github.com/peteristhegreat/c0ca6e1a57e5d4b9cd0bb1d7b3be1d6a

это работает до тех пор, пока вы знаете, какие темы доступны в целевой системе.

список от freedesktop.org перечислил 286 иконы.

используйте значки, включенные в Qt

как указал @peppe, Qt также включает 70 стандартных значков.

widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));

http://doc.qt.io/qt-5/qstyle.html#StandardPixmap-enum

вывод

использование фондовой библиотеки в вашей целевой системе, вероятно, является самым быстрым. Использование встроенных Qt быстро понять и использовать, но довольно ограничено. Использование файла ресурсов вероятно, самый надежный метод и дает неограниченные возможности для использования значка.

обязательно выберите стандартный пакет значков и подумайте о лицензировании и атрибуции и некоторых других подобных вещах.

и нет недостатка иконок, доступных в интернете:

https://www.quora.com/What-is-the-best-icon-library

https://www.google.com/search?q=open + источник + значок + библиотека

надеюсь, что помогает.