簡述
在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 "Qt Creator.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 "Qt Creator.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
然后,添加資源文件並進行設置。。。例如: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 . . . }
- 1
或者
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 | 文件子類型 |
-
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;
http://blog.csdn.net/liang19890820/article/details/51880826