Qt之Windows資源文件(.rc文件)


簡述

在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 文件子類型

對應的結構體:

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

 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM