Как работают значки "тема" в Qt Creator Designer?
когда я создаю кнопку "Command link" (QCommandLinkButton
) Он имеет относительно хороший значок с зеленой стрелкой.
Я хотел бы посмотреть, какие еще хорошие значки Я могу выбрать. Когда я пытаюсь изменить значок, [Theme]
появляется вместо пути или некоторого диалога выбора GUI:
Я также заметил контекстное меню:
когда я нажимаю установить значок из темы, снова ожидая некоторого GUI список выбора, я получаю только текстовое поле:
то, что я представил:
где список значков, из которых была взята зеленая стрелка?
2 ответов
Я не думаю, что это функция, которую вы хотите использовать. Название "тема" там соответствует QIcon::fromTheme
функциональность, которая использует значки, названные в соответствии со спецификацией FDO
- http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
- http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
и они на самом деле не поддерживается платформы non-FDO (Windows, Mac,...) если вы не развернете свои собственные файлы тем.
теперь некоторые иконки поставляются в комплекте с самой Qt, я не знаю как установить их из конструктора, но из кода, Вы можете использовать QStyle::standardIcon
:
widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));
если значок, который вам нужен, не предоставляется Qt, вам нужно будет его отправить. В этом случае Системный Ресурс удобный путь связать его вместе с вашим выполнимый.
последнее, но не менее важное, с точки зрения UX вы должны рассмотреть возможность использования QToolButton
S, Если вы действительно не создаете 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 + источник + значок + библиотека
надеюсь, что помогает.