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

简介: 简述在Windows下使用Qt时,通常会用到Windows的资源文件 - 为exe设置信息,其中包括:文件说明、产品名称、产品版本、版权等信息。。。由于是Windows平台相关的东西,Qt助手中对于rc文件几乎没有任何介绍(在Setting the Application Icon一文中简单提到)。简述资源信息效果实现图标参数示例

简述

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

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

资源信息

效果

这里写图片描述

实现

首先,我们添加一个名为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

然后,添加资源文件并进行设置。。。例如: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 0x0L
BEGIN
    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
    END
END

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

RC_FILE += myapp.rc

图标

参考MSDN:ICON resource

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

nameID ICON filename

参数

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

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

示例

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

desk1   ICON "desk.ico"
11      ICON "custom.ico"

可参考:Using Icons

VERSIONINFO

见MSDN:VERSIONINFO resourceVS_FIXEDFILEINFO structure

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

格式化VERSIONINFO

有两种方式格式化VERSIONINFO:

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

或者

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

参数

  • 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 文件子类型


对应的结构体:

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天前
|
Web App开发 Windows
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
174 0
|
1天前
|
Windows
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
|
1天前
|
Java 程序员 Windows
【windows自带exe】使用`findstr.exe`来搜索包含某个字符串的文件
【windows自带exe】使用`findstr.exe`来搜索包含某个字符串的文件
11 0
|
1天前
|
安全 Linux 网络安全
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
18 0
|
1天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
|
1天前
|
安全 数据安全/隐私保护 Windows
Windows文件搜索神器Everything安装配置结合内网穿透实现公网查询本地文件
Windows文件搜索神器Everything安装配置结合内网穿透实现公网查询本地文件
|
1天前
|
Apache 项目管理 数据安全/隐私保护
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
|
1天前
|
网络协议 安全 文件存储
Windows如何使用IIS服务搭建本地WebDAV网站并实现远程管理储存文件
Windows如何使用IIS服务搭建本地WebDAV网站并实现远程管理储存文件
|
1天前
|
存储 安全 文件存储
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
Windows系统本地部署HFS并结合内网穿透实现公网访问本地存储文件
|
1天前
|
XML 数据可视化 程序员
Qt 中的项目文件解析和命名规范
Qt 中的项目文件解析和命名规范

推荐镜像

更多