Russian Qt Forum

Qt => Вопросы новичков => Тема начата: abrahadabra от Март 07, 2016, 17:05



Название: Стандартные иконки
Отправлено: abrahadabra от Март 07, 2016, 17:05
Добрый день.

Изучаю сейчас построение меню и панелей инструментов.
Есть класс QAction, который используется при создании кнопки на панели инструментов. Он принимает файл иконки.
Но по уму для большинства стандартных действий (таких как «Новый докуемнт», «Копировать», «Вставить», «Сохранить») есть стандартные иконки в ОС.

Как можно использовать именно эти стандартные иконки в своих кнопках?


Название: Re: Стандартные иконки
Отправлено: Smogg от Март 07, 2016, 17:57
Qt - кроссплатформен. "Стандартные" же иконки - даже для самой ОСи не стандартные, а исключительно дефолтные. Так что прикручивай ОСьное АПИ, чтоб проверить на существование дефолтных иконок.


Название: Re: Стандартные иконки
Отправлено: abrahadabra от Март 07, 2016, 18:02
То есть, я хочу чего-то странного, а делать отдельные файлы иконок для каждого приложения — это и есть правильный и прямой путь?


Название: Re: Стандартные иконки
Отправлено: Smogg от Март 07, 2016, 18:38
В парадигме Qt'a - да. Он наоборот настаивает на стилизации приложения кагрится онзефлай. Хоть и заявляется, что в разных средах приложение будет выглядеть нативно, но на самом деле, Qt для того, чтоб в разных средах приложение выглядело одинаково, а имитация под нативность - чисто чтоб была какая-то дефолтная тема.


Название: Re: Стандартные иконки
Отправлено: kambala от Март 07, 2016, 18:40
на самом деле можно достать дефолтные иконки, см. QStyle::StandardPixmap


Название: Re: Стандартные иконки
Отправлено: abrahadabra от Март 07, 2016, 20:54
Спасибо!
Да, вот такая конструкция сработала:
Код:
newAct = new QAction(QIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon)), tr("&New"), this);

Но с другой стороны, если попробовать перечисленные здесь варианты (http://doc.qt.io/qt-5/qstyle.html#StandardPixmap-enum), то волей-неволей согласишься с мыслью, что лучше самостоятельно позаботиться об иконках.


Название: Re: Стандартные иконки
Отправлено: Smogg от Март 09, 2016, 11:58
С учетом всего "зоопарка" как популярных ОСей, так и их так называемых "сборок", я бы не стал рисковать полагаться на "дефолтные" иконки)


Название: Re: Стандартные иконки
Отправлено: Авварон от Март 09, 2016, 12:42
Странно, куда делись все гуру. Советуют же всякий бред. Тыц (http://doc.qt.io/qt-5/qicon.html#fromTheme). Там и фоллбэк предусмотрен и всё, что надо. Только кофе в постель не приносит.


Название: Re: Стандартные иконки
Отправлено: kambala от Март 09, 2016, 12:52
Цитировать
Note: By default, only X11 will support themed icons. In order to use themed icons on Mac and Windows, you will have to bundle a compliant theme in one of your themeSearchPaths() and set the appropriate themeName().
а где эти темы брать для не-иксов?


Название: Re: Стандартные иконки
Отправлено: abrahadabra от Март 09, 2016, 14:36
Странно, куда делись все гуру. Советуют же всякий бред. Тыц (http://doc.qt.io/qt-5/qicon.html#fromTheme). Там и фоллбэк предусмотрен и всё, что надо. Только кофе в постель не приносит.

А вот это было найдено и опробовано в первую очередь, ещё до обращения на форум. Но вот совершенно непонятно, что делать с темами. То есть, вот там такое замечание:
Цитировать
Note: By default, only X11 will support themed icons. In order to use themed icons on Mac and Windows, you will have to bundle a compliant theme in one of your themeSearchPaths() and set the appropriate themeName().
… и, честно говоря, вообще непонятно, что всё это значит.