首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QIcon SVG不同大小

Qt QIcon SVG不同大小
EN

Stack Overflow用户
提问于 2011-05-31 16:41:05
回答 2查看 3.6K关注 0票数 3

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

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

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2011-06-01 08:43:27

我通常使用单独的PNG图像(16x16像素,例如“./Icons/appwindow.png”)在我的主窗口类构造函数中使用setWindowIcon()函数来设置标题栏图标:

代码语言:javascript
复制
this->setWindowIcon(QIcon(QLatin1String(":/Images/Icons/app_window.png")));

对于rest图标,您可以使用以下优秀的免费软件应用程序:http://www.icofx.ro/

它允许你创建一个"myapp.ico“文件(对于微软视窗)和一个"myapp.icns”文件(对于Mac ),如果你从一个256x256的图像开始,它可以自动为你创建所有图标大小!

对于Mac OS/X,必须在"MyApp.pro“文件中放入以下行:

代码语言:javascript
复制
ICON = Icons/myapp.icns

用于MS-Windows的您必须在"MyApp.pro“文件中放入以下行:

代码语言:javascript
复制
win32::RC_FILE = myapp.rc

您还必须创建一个"myapp.rc“文件,如下所示:

代码语言:javascript
复制
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”。图标定义的唯一重要一行是第一行:

代码语言:javascript
复制
IDI_ICON1   ICON    DISCARDABLE     "./Icons/myapp.ico"

这表示文件夹中有一个文件"MyApp.ico“。/Icons/

还要注意的是,在微软视窗系统中,如果你修改你的"myapp.ico“文件,重新构建你的项目并再次运行你的应用程序,由于windows-explorer的图标缓存,图标并不总是正确显示。下面是清除/重建windows资源管理器图标缓存的各种方法的链接:Rebuild icon cache to fix incorrectly displayed icons

票数 2
EN

Stack Overflow用户

发布于 2011-05-31 20:34:33

你可以在不同的位置使用一个SVG-Icon,它应该在绘制时缩放。但是应用程序图标(如ALT+TAB所示)有所不同,请参阅文档here

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6184995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档