Qt 设置软件的版本信息

相关资料:https://blog.csdn.net/u012878602/article/details/119682389

 

Qt设置软件的版本等信息
对于Qt开发的软件,我们如何去方便的查看其软件的版本信息。这里提供了几种方式。

在运行程序期间设置版本信息
大部分的程序在运行之后都会提供一个关于的按钮,通过点击该按钮并弹出一个关于界面,则可以查看相关的程序信息。此关于界面为用户自定义的一个界面。或者可以在主界面的右下角显示出当前软件的版本信息。两种方式之间并不冲突。

Qt的QCoreApplication类提供一些软件版本信息的静态公共接口,如下所示。

//设置相关信息
QCoreApplication::setApplicationName("APPNAME");
QCoreApplication::setApplicationVersion("1.0.0.0");
QCoreApplication::setOrganizationName("Qt");
QCoreApplication::setOrganizationDomain("www.qt.com");

//取出相关信息
QString appName = QCoreApplication::applicationName();
QString appVersion = QCoreApplication::applicationVersion();
QString orgDomain = QCoreApplication::organizationDomain();
QString orgName = QCoreApplication::organizationName();
如果用户需要设置更多的信息,则需要自己去实现,可以将所有的版本信息放置于一个version.h的头文件中。如下所示。

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

 

在不运行程序期间设置版本信息
有的时候我们不想运行软件或者当前环境不支持软件正常运行,那么此时该如何设置软件版本信息。

windows 平台下的RC文件
对于Qt工程来说,可以直接在.pro文件中设置相关的软件信息。代码示例如下。

 1 #app.pro
 2 
 3 #程序版本
 4 VERSION = 1.0.0.0
 5 #程序图标
 6 RC_ICONS = app.ico
 7 #公司名称
 8 QMAKE_TARGET_COMPANY ="company"
 9 #程序说明
10 QMAKE_TARGET_DESCRIPTION = "test app"
11 #版权信息
12 QMAKE_TARGET_COPYRIGHT = "Copyright(C) 2017"
13 #程序名称
14 QMAKE_TARGET_PRODUCT = "app"
15 #程序语言
16 #0x0800代表和系统当前语言一致
17 RC_LANG = 0x0800

 

则对于生成程序我们可以之间右键属性面板的详细信息中查看到设置软件信息。

当然Qt工程其实使用的windows平台下面的RC文件,那么我们也可以直接建立一个rc文件,在该文件中设置相关的软件信息。

rc文件如下:

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

 

这个时候只需要在.pro文件中引用该RC文件即可。RC_FILE += myapp.rc

linux 平台下设置软件信息
由于linux平台下面并没有RC文件,所以需要使用命令行来显示版本信息,即通过命令行执行 myApp -v 来显示版本信息。
相关相关代码如下:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//显示版本信息
if (a.arguments().size() == 1 && a.arguments().at(0) == "-v")
{
QString appInfo = "appInfo";
std::cout << appInfo.toStdString();
return a.exec();
}
}
配置文件记录软件信息
对于大型的集成系统来说,可以通过一个统一的配置文件来读取软件的配置信息,该配置文件必须由集成系统提供,各个子模块软件提供信息。

 

posted on 2023-07-01 10:18  疯狂delphi  阅读(538)  评论(0编辑  收藏  举报

导航