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();
}
}
配置文件记录软件信息
对于大型的集成系统来说,可以通过一个统一的配置文件来读取软件的配置信息,该配置文件必须由集成系统提供,各个子模块软件提供信息。
欢迎关注我,一起进步!扫描下方二维码即可加我