Qt之添加Windows资源文件(.rc文件)
2016-07-11 15:34
633 查看
简述
在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
然后,添加资源文件并进行设置。。。例如: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 resource 和 VS_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 | 文件子类型 |
指定一个或多个版本信息块。块包含字符串信息或可变信息。
欲了解更多信息,请参考: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;
更多参考
Qt之生成Window资源文件(.rc 文件)相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)