Qt QIcon SVG不同尺寸

Qt QIcon SVG different sizes

本文关键字:QIcon SVG Qt      更新时间:2023-10-16

我正在使用Qt的QIcon类来设置我的应用程序的应用程序图标。

我的图标是SVG文件,加载很好。

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

我的问题是:我想为不同的脓包制作不同的图标。例如,我希望标题栏和实际图标有不同的图标(即大小),在按下ALT+TAB时显示。

我找到了addFile()QSize参数,但是,图标会坚持某个特定的大小,我不知道(因为不同的窗口管理器可能有不同的标题栏大小)。

我如何为标题栏定义一个图标,为其余部分定义一个(这几乎是我所要求的简短版本)?

谨致问候,mefiX

我通常使用一个单独的PNG图像(16x16像素,例如"./Icons/app_window.PNG")来使用我的主窗口类构造函数中的setWindowIcon()函数设置标题栏图标

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"和rest选项是不可选择的,但您可以使用它来定义所有VER_xxx常量,而不是像"MyAppName"那样直接将它们作为常量字符串。图标定义唯一重要的一行是第一行:

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

这意味着文件夹中存在一个文件"MyApp.ico"/图标/

还要注意的是,在MS Windows上,如果您修改"myapp.ico"文件,重建项目并再次运行应用程序,由于Windows资源管理器的图标缓存,图标并不总是正确显示。以下是一个链接,其中包含清除/重建windows资源管理器图标缓存的各种方法:重建图标缓存以修复错误显示的图标

您可以在不同的位置使用一个SVG图标,绘制时应进行缩放。但是应用程序图标(显示在ALT+TAB)不同,请参阅此处的文档。

要了解如何将SVG图标转换为ico格式,请查看此处。