关于VS+QT5应用程序换图标的解决方案,可以如下操作:
1. 原理介绍
QT5程序在编译后的exe文件的图标,并不是我们常见的.ico格式,而是.qrc格式。.qrc格式是QT资源文件的格式,里面包含了程序中需要用到的图像、音频等资源。所以,如果我们想要修改QT程序的图标,实际上就是需要修改资源文件中的图标。
2. 修改.res文件
(1)在项目中添加一个资源文件,格式为.res。(注:VS2017中,此文件是链接到项目中的文件,故将此文件放入src目录下)
(2)在资源文件中添加图标,添加后,将资源文件的后缀改为.rc。
#include <windows.h>
#include <WinUser.h>
///////////////////////////////////////////////////////////////////////////////
IDI_ICON1 ICON "icon.ico"
///////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#include "afxres.rc" // Standard components
/////////////////////////////////////////////////////////////////////////////
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
#endif // English (U.S.) resources
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#define APSTUDIO_READONLY_SYMBOLS
#endif // not APSTUDIO_INVOKED
(3)打开VS的命令行窗口,执行rc命令,将.rc文件编译为.res文件,例如:
rc /r /fo .\src\resource.res .\src\resource.rc
3. 修改.qrc文件
(1)将资源文件添加到QT的资源文件(.qrc)中。
(2)修改.qrc文件中WindowIcon属性,将属性值修改为:资源文件中的图标id,例如:
<qresource prefix="/">
<file>main.qml</file>
<file>qml.qrc</file>
<file>...</file>
<icon theme="minidisc">
<size>16x16</size>
<size>22x22</size>
<size>24x24</size>
<size>32x32</size>
<size>48x48</size>
<size>64x64</size>
<size>128x128</size>
<size>256x256</size>
<size>512x512</size>
<size>1024x1024</size>
<size>2048x2048</size>
<size>4096x4096</size>
</icon>
<file alias="log"/>
<file alias="icon.ico">src/resource.res"并修改</file>
</qresource>
4. 效果测试
(1)发布应用程序。
(2)在Windows下检查应用程序的图标。方法是: 右键点击程序文件->属性->详细信息。
这样就实现了Qt5代码中应用程序的图标更换。
示例说明
假设我们的工程名称为"myproject",图标名称为"myicon.ico"。
示例1:VS中使用cmd命令行工具,编译资源文件。使用如下命令:
rc /r /fo .\src\resource.res .\src\resource.rc
示例2:在QML程序的主窗口中,设置应用程序图标。代码如下:
// main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
import "qml/icons"
Window {
title: qsTr("My Application")
visible: true
minimumWidth: 640
minimumHeight: 480
color: "#171717"
icon: "icons:myicon.png"
Button {
text: qsTr("Hello World")
anchors.centerIn: parent
onClicked: {
console.log("Button clicked")
}
}
}
// qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>qml.qrc</file>
<file>...</file>
<icon theme="minidisc">
<size>16x16</size>
<size>22x22</size>
<size>24x24</size>
<size>32x32</size>
<size>48x48</size>
<size>64x64</size>
<size>128x128</size>
<size>256x256</size>
<size>512x512</size>
<size>1024x1024</size>
<size>2048x2048</size>
<size>4096x4096</size>
</icon>
<file alias="log"/>
<file alias="myicon.png">icons/myicon.png</file>
</qresource>
</RCC>
其中,图标文件存放在qml/icons文件夹中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于VS+QT5应用程序换图标的解决方案 - Python技术站