Qt QIcon SVG разных размеров - PullRequest
3 голосов
/ 31 мая 2011

Я использую класс QIcon Qt, чтобы установить значок приложения своих приложений.

Мои иконки - это файлы SVG, которые загружаются очень хорошо.

QIcon appIcon;
QString iconPath = "share/icons/myapp.svg;
QFile iconFile(iconPath);
if (iconFile.exists()) {
    appIcon.addFile(iconPath);
}

QApplication::setWindowIcon(appIcon);

Мой вопрос:Я хочу иметь разные иконки для разных целей.Например, я хотел бы, чтобы при заголовке ALT+TAB.

я нашел разные значки (т.е. размеры) для строки заголовка и для фактического значка. Я нашел параметр QSize, равный addFile(),но затем значок будет придерживаться одного определенного размера, который я не знаю (поскольку разные оконные менеджеры могут иметь разные размеры строки заголовка).

Как определить значок для строки заголовка и один дляостальное (это в значительной степени короткая версия того, что я спрашиваю)?

С уважением, mefiX

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Обычно я использую отдельное изображение PNG (16x16 пикселей, например, "./Icons/app_window.png"), чтобы установить значок в строке заголовка с помощью функции setWindowIcon () в конструкторе класса mainwindow:

this->setWindowIcon(QIcon(QLatin1String(":/Images/Icons/app_window.png")));

Для остальных иконок вы можете использовать следующее отличное бесплатное приложение: http://www.icofx.ro/

Это позволяет вам создавать как файл "myapp.ico" (для MS-Windows), так и файл "myapp.icns" (для Mac OSX), и если вы начинаете с изображения 256x256, он может автоматически создавать все размеры значков для тебя!

Для Mac OS / X вы должны поместить следующую строку в ваш файл "MyApp.pro":

ICON = Icons/myapp.icns

Для MS-Windows вы должны поместить следующую строку в ваш файл "MyApp.pro":

win32::RC_FILE = myapp.rc

и вам также нужно создать файл «myapp.rc», который выглядит следующим образом:

IDI_ICON1   ICON    DISCARDABLE     "./Icons/myapp.ico"

#include <windows.h>
#include "MyAppVersion.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

#include "MyAppVersion.h" и остальные параметры необязательны, но вы можете использовать их для определения всех констант VER_xxx вместо непосредственного помещения их в виде константной строки, такой как "MyAppName". Единственная важная строка для определения иконки - первая:

IDI_ICON1   ICON    DISCARDABLE     "./Icons/myapp.ico"

, что означает, что файл "MyApp.ico" находится в папке ./Icons/

Обратите внимание, что в MS-Windows, если вы измените свой файл "myapp.ico", перестроите свой проект и снова запустите приложение, значок не всегда отображается правильно из-за кэша значков в Windows-Explorer. Вот ссылка с различными методами для очистки / перестройки кэша значков Windows-Explorer: Перестроить кэш иконок, чтобы исправить неправильно отображаемые иконки

0 голосов
/ 31 мая 2011

Вы можете использовать один SVG-значок в другом положении, он должен масштабироваться при рисовании.Но значок приложения (показанный в ALT + TAB) отличается, см. Документацию здесь .

Чтобы узнать, как преобразовать значки SVG в формат ico, посмотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...