我正在使用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
发布于 2011-06-01 08:43:27
我通常使用单独的PNG图像(16x16像素,例如“./Icons/appwindow.png”)在我的主窗口类构造函数中使用setWindowIcon()函数来设置标题栏图标:
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“文件中放入以下行:
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
ENDinclude "MyAppVersion.h“和rest选项是可选的,但您可以使用它来定义所有的VER_xxx常量,而不是直接将它们作为常量字符串,如"MyAppName”。图标定义的唯一重要一行是第一行:
IDI_ICON1 ICON DISCARDABLE "./Icons/myapp.ico"这表示文件夹中有一个文件"MyApp.ico“。/Icons/
还要注意的是,在微软视窗系统中,如果你修改你的"myapp.ico“文件,重新构建你的项目并再次运行你的应用程序,由于windows-explorer的图标缓存,图标并不总是正确显示。下面是清除/重建windows资源管理器图标缓存的各种方法的链接:Rebuild icon cache to fix incorrectly displayed icons
发布于 2011-05-31 20:34:33
你可以在不同的位置使用一个SVG-Icon,它应该在绘制时缩放。但是应用程序图标(如ALT+TAB所示)有所不同,请参阅文档here。
要了解如何将SVG图标转换为ico格式,请查看here。
https://stackoverflow.com/questions/6184995
复制相似问题