Windows 资源文件(.rc文件)--Qt程序添加图标

在windows下使用Qt时,通常会用到Windows的资源文件(给exe设置图标和版本信息等),比如命名为 main.rc

#include "winver.h"

IDI_ICON1       ICON      "main.ico"
IDI_ICON2       ICON      "main2.ico"

VS_VERSION_INFO VERSIONINFO
 FILEVERSION    1,0,0,0
 PRODUCTVERSION 1,0,0,0
 FILEFLAGS      0x0L
 FILEFLAGSMASK  0x3fL
 FILEOS         VOS_NT_WINDOWS32
 FILETYPE       VFT_APP
 FILESUBTYPE    VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000004b0"
        BEGIN
            VALUE "CompanyName", "Hermes Microvision Inc"
            VALUE "FileDescription", "HMI Image EZ USB(2rd)"
            VALUE "FileVersion", "1.0.0.0"
            VALUE "LegalCopyright", "Copyright (C) 2009-2011 Hermes Microvision Inc"
            VALUE "InternalName", "hmiezusb"
            VALUE "OriginalFilename", "hmiezusb"
            VALUE "ProductName", "HMI Image EZ USB(2rd)"
            VALUE "ProductVersion", "1.0.0.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1200
    END
END

然后,在 .pro 文件内,添加

win32:RC_FILE = main.rc

由于是Windows平台相关的东西,Qt manual 对于 .rc 几乎没有任何介绍(只在 Setting the Application Icon 一文中简单用到一点点)。

图标

见 MSDN ICON Resource一文:

格式:

nameID ICON filename

例子:

IDI_ICON1               ICON    "main.ico"
IDI_ICON2               ICON    "main2.ico"

其中:

nameID

16位无符号整数 或 唯一的名字

filename

如果不在工作目录下需要使用完整路径,需要使用引号扩住

VERSIONINFO

见MSDN VERSIONINFO Resource 和 VS_FIXEDFILEINFO Structure

格式:

versionID VERSIONINFO 
fixed-info
BEGIN
block-statement
. . .
END

其中,fixed-info 信息:

字段

实例值

 

FILEVERSION

1,0,0,0

文件版本,4个16位整数,(其实是2个32位整数)

PRODUCTVERSION

1,0,0,0

产品版本,同上

FILEFLAGS

0x0L

文件属性

FILEFLAGSMASK

0x0L

属性的掩模

FILEOS

VOS_NT_WINDOWS32

用于何种操作系统

FILETYPE

VFT_APP

文件一般类型(对于dll,类型为 VFT_DLL)

FILESUBTYPE

VFT2_UNKNOWN

细分的类型

对应的结构体:

typedef struct tagVS_FIXEDFILEINFO {
  DWORD dwSignature;
  DWORD dwStrucVersion;
  DWORD dwFileVersionMS;
  DWORD dwFileVersionLS;
  DWORD dwProductVersionMS;
  DWORD dwProductVersionLS;
  DWORD dwFileFlagsMask;
  DWORD dwFileFlags;
  DWORD dwFileOS;
  DWORD dwFileType;
  DWORD dwFileSubtype;
  DWORD dwFileDateMS;
  DWORD dwFileDateLS;
} VS_FIXEDFILEINFO;

fix 字段后面是可变字段:

  • 0个或多个 StringFileInfo 结构

    • 1 个或多个 StringTable 结构

  • 0个或多个 VarFileInfo 结构

看不太懂,暂且放到这儿,恩。

参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值