Qt QIcon SVG不同尺寸
Qt QIcon SVG different sizes
我正在使用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格式,请查看此处。
- 将QIcon添加到QTableView单元格
- 如何使用painter类绘制svg图形
- 在C++中生成 SVG
- 使用 Direct2D 绘制 SVG 路径:无法绘制椭圆弧
- 如何将 2d 数组转换为 svg 或 png 格式的数独图像?
- 我正在将QPixmap传递给QAbstractButton::setIcon而不是QIcon,但我没有得到错误...为什么?
- Qt在"debug"模式下正确渲染此SVG,但在"release"
- 从内存中的 SVG 内容创建 QIcon
- 如何在 Qt/hook QPainter 中渲染没有抗锯齿的 SVG 以避免抗锯齿?
- 合并两个 QIcon
- QIcon 始终显示为 2x dpi
- 如何使用 QT c++ 打开 SVG
- UWP中的直接2D SVG绘制
- SVG 格式的输出
- QT5/C :更改Qtoolbar内部的QICON的样式
- 在 Win32 (C++) 中打开、操作和呈现 SVG 文件
- 将派生自 QAbstractListModel 的类提供的 QIcon 绑定到 QML Image
- 使用 Boost 属性树解析 SVG (XML)
- 用开罗加载 svg
- Qt QIcon SVG不同尺寸