关于VS+QT5应用程序换图标的解决方案

关于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技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++面试常见问题整理汇总

    C++面试常见问题整理汇总 本文旨在整理和汇总C++面试中常见的问题,包括但不限于基础知识、语法、实际应用等方面,并提供相应的解答和说明以供参考。 1. 基础知识 1.1 C++的数据类型有哪些?它们所占用的字节空间分别是多少? C++的数据类型包括基本数据类型和构造类型,其中基本数据类型有: 整型(int、short、long、long long等) 布尔…

    C 2023年5月22日
    00
  • JQuery ajax返回JSON时的处理方式 (三种方式)

    当使用 JQuery 发送 ajax 请求获取 JSON 数据时,我们需要对返回数据进行处理。下面总结了三种常用的方式:使用回调函数、使用 Promise 对象和使用 async/await。 使用回调函数 使用回调函数处理返回的 JSON 数据是最常见的方式,可以通过在 $.ajax() 函数的 success 属性中指定一个回调函数来实现。该回调函数会在…

    C 2023年5月23日
    00
  • C++中四种加密算法之DES源代码

    下面是详细讲解C++中四种加密算法之DES源代码的完整攻略。 什么是DES算法 DES算法全称为数据加密标准(Data Encryption Standard),是一种使用密钥加密的对称加密算法。该算法是目前应用最广泛的加密算法之一,被广泛应用于各种安全领域。 DES算法的源代码 以下是C++实现的DES算法源代码: #include <iostrea…

    C 2023年5月23日
    00
  • 最短时间学会基于C++实现DFS深度优先搜索

    最短时间学会基于C++实现DFS深度优先搜索攻略 什么是DFS深度优先搜索 DFS即深度优先搜索,是一种基于搜索算法的遍历和检索树或图数据结构的算法。DFS算法采用深度优先策略,从根结点出发访问所有可达结点,直到叶子节点。在访问某个结点时,先访问该结点的第一个未访问的相邻节点,然后递归的访问其非相邻节点。其搜索的核心思想是根据某个搜索方向向前搜索到底,直至无…

    C 2023年5月22日
    00
  • C++自定义函数判断某年某月某日是这一年中第几天

    针对您的问题我可以提供以下攻略来实现“C++自定义函数判断某年某月某日是这一年中第几天”: 算法思路 判断某年某月某日是这一年中第几天可以分解成以下几个步骤: 判断该年是不是闰年。 累加从1月到该月的天数。 如果是闰年且该月大于2月,天数再加1。 最后加上该月自身的天数。 返回累加的天数。 可以通过一个自定义函数来实现上述算法,该函数名称可以是getDayO…

    C 2023年5月23日
    00
  • 基于javascript实现按圆形排列DIV元素(二)

    基于JavaScript实现按圆形排列DIV元素的完整攻略如下: 步骤1:构建HTML结构 首先,我们需要构建一个HTML页面,并在其中添加一个父级div元素和一些子级的div元素。父级div元素用于容纳所有子级div元素,并设置其宽度和高度为固定值,例如600px。子级div元素用于显示实际内容,我们只需要设置它们的宽度和高度即可。 <div id=…

    C 2023年5月22日
    00
  • 详解C/C++高精度(加减乘除)算法中的压位优化

    详解C/C++高精度(加减乘除)算法中的压位优化 什么是高精度算法? 高精度算法(又叫大数算法)是指可以处理比计算机支持的最大数值范围更大的数值计算方法。在C/C++中,int类型变量的最大范围一般为2^31-1即2147483647,而long long型变量的最大范围一般为2^63-1即9223372036854775807。如果需要处理比这更大的数字,…

    C 2023年5月22日
    00
  • 在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出

    在 .NET Framework 2.0 中,未处理的异常可能会导致基于 ASP.NET 的应用程序意外退出。以下是完整攻略: 问题描述 基于 ASP.NET 的应用程序在处理某些异常情况时,未正确处理异常,导致应用程序发生了未预期的异常。这个问题往往会导致应用程序意外退出。原因可能是编码错误、内存不足或其他问题。 解决方案 要解决这个问题,需要进行以下步骤…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部