Qt QIcon SVG不同大小

问题描述

我正在使用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
参数,但随后该图标将停留在一个特定的大小,我不知道(因为不同的窗口管理器可能具有不同的标题栏大小)。 如何为标题栏定义一个图标,为其余图标定义一个(这几乎是我要问的简短版本)? 亲切的问候, 墨菲     

解决方法

        我通常使用一个单独的PNG图像(16x16像素,例如\“ ./ Icons / app_window.png \”)在我的mainwindow类构造函数中使用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 \”和其余选项是当然的,但是您可以使用它来定义所有VER_xxx常量,而不用直接将它们作为常量字符串(例如\“ MyAppName \”)放置。图标定义的唯一重要一行是第一行:
IDI_ICON1   ICON    DISCARDABLE     \"./Icons/myapp.ico\"
这意味着文件\“ MyApp.ico \”驻留在文件夹./Icons/中。 还要注意,在MS-Windows上,如果修改\“ myapp.ico \”文件,重新生成项目并再次运行应用程序,则由于Windows-explorer的图标缓存,该图标并非总是正确显示。 这是具有各种清除/重建Windows资源管理器图标高速缓存的方法的链接: 重建图标缓存以修复错误显示的图标     ,        您可以在不同位置使用一个SVG图标,绘制时应缩放比例。但是应用程序图标(在ALT + TAB处显示)有所不同,请参见此处的文档。 要了解如何将SVG图标转换为ico格式,请参见此处。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...