Qt之添加Windows资源文件(.rc文件)

来源:互联网 发布:linux kangle一键安装 编辑:程序博客网 时间:2024/06/18 10:33

以下内容转载或引用或参考

http://blog.csdn.net/liang19890820/article/details/51880826


简述

在Windows下使用Qt时,通常会用到Windows的资源文件 - 为exe设置信息,其中包括:文件说明、产品名称、产品版本、版权等信息。。。

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

  • 简述
  • 资源信息
    • 效果
    • 实现
  • 图标
    • 参数
    • 示例
  • VERSIONINFO
    • 格式化VERSIONINFO
    • 参数
  • 更多参考

资源信息

效果

这里写图片描述

实现

首先,我们添加一个名为version.h的头文件,包含资源信息。

#ifndef VERSION_H#define VERSION_H#define PRODUCT_ICON           "myapp.ico" // 图标#define FILE_VERSION           4,0,2,666   // 文件版本#define FILE_VERSION_STR       "4.0.2.666"#define PRODUCT_VERSION        4,0,2,666   // 产品版本#define PRODUCT_VERSION_STR    "4.0.2.666"#define COMPANY_NAME           "Digia"#define INTERNAL_NAME          "MyApp.exe"#define FILE_DESCRIPTION       "Qt Creator based on Qt 5.7.0 (MSVC 2013, 32 bit)"  // 文件说明#define LEGAL_COPYRIGHT        "Copyright 2008-2016 The Qt Company Ltd. All rights reserved." // 版权#define ORIGINAL_FILE_NAME     "MyApp.exe"    // 原始文件名#define PRODUCT_NAME           "Qt Creator"        // 产品名称#define ORGANIZATION_DOMAIN    "https://www.qt.io/"  // 域名#endif // VERSION_H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

然后,添加资源文件并进行设置。。。例如:myapp.rc

#include "winres.h"#include "version.h"// 图标IDI_ICON1       ICON      PRODUCT_ICON// 版本信息VS_VERSION_INFO VERSIONINFO FILEVERSION FILE_VERSION PRODUCTVERSION PRODUCT_VERSION FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS 0x1L#else FILEFLAGS 0x0L#endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0LBEGIN    BLOCK "StringFileInfo"    BEGIN        BLOCK "080404b0"        BEGIN            VALUE "CompanyName", COMPANY_NAME            VALUE "FileDescription", FILE_DESCRIPTION            VALUE "FileVersion", FILE_VERSION_STR            VALUE "InternalName", INTERNAL_NAME            VALUE "LegalCopyright", LEGAL_COPYRIGHT            VALUE "OriginalFilename", ORIGINAL_FILE_NAME            VALUE "ProductName", PRODUCT_NAME            VALUE "ProductVersion", PRODUCT_VERSION_STR        END    END    BLOCK "VarFileInfo"    BEGIN        VALUE "Translation", 0x804, 1200    ENDEND
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

最后,在.pro文件中,添加:

RC_FILE += myapp.rc
  • 1
  • 1

图标

参考MSDN:ICON resource

为指定应用程序定义图标:

nameID ICON filename
  • 1
  • 1

参数

  • nameID 
    唯一名称或一个16位无符号整数值,识别资源。

  • filename 
    包含该资源的文件名称。该名称必须是有效的文件名;如果文件不在当前工作目录,那么必须使用完整路径。路径应该是带引号的字符串。

示例

下面示例,定义了两个资源图标:

desk1   ICON "desk.ico"11      ICON "custom.ico"
  • 1
  • 2
  • 1
  • 2

可参考:Using Icons

VERSIONINFO

见MSDN:VERSIONINFO resource 和 VS_FIXEDFILEINFO structure

定义一个版本信息资源。该资源包含有关文件的版本号、原始文件名等信息。该资源用于与Version Information一起使用。

格式化VERSIONINFO

有两种方式格式化VERSIONINFO:

versionID VERSIONINFO fixed-info  { block-statement . . . }
  • 1
  • 1

或者

versionID VERSIONINFO fixed-infoBEGINblock-statement. . .END
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参数

  • versionID 
    版本信息资源标识符。此值必须为1。

  • fixed-info 
    版本信息,如文件版本和操作系统。此参数包括以下语句:

字段描述FILEVERSION version文件的二进制版本号。该版本由四个16位整数定义。例如:“FILEVERSION 3,10,0,61”PRODUCTVERSION version产品版本,同上FILEFLAGSMASK fileflagsmask属性的掩模FILEFLAGS fileflags文件属性FILEOS fileos用于何种操作系统FILETYPE filetype文件一般类型(对于dll,类型为 VFT_DLL)FILESUBTYPE subtype文件子类型


  • block-statement 
    指定一个或多个版本信息块。块包含字符串信息或可变信息。

    欲了解更多信息,请参考:StringFileInfo BLOCK 或 VarFileInfo BLOCK

对应的结构体:

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

更多参考

  • Qt之生成Window资源文件(.rc 文件)