Qt 设置软件的版本信息

3 篇文章 0 订阅
1 篇文章 0 订阅

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的头文件中。如下所示。

#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

在不运行程序期间设置版本信息

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

windows 平台下的RC文件

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

#app.pro

#程序版本
VERSION = 1.0.0.0
#程序图标
RC_ICONS = app.ico
#公司名称
QMAKE_TARGET_COMPANY ="company"
#程序说明
QMAKE_TARGET_DESCRIPTION = "test app"
#版权信息
QMAKE_TARGET_COPYRIGHT = "Copyright(C) 2017"
#程序名称
QMAKE_TARGET_PRODUCT = "app"
#程序语言
#0x0800代表和系统当前语言一致
RC_LANG = 0x0800

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

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

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文件即可。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();
    }
}

配置文件记录软件信息

对于大型的集成系统来说,可以通过一个统一的配置文件来读取软件的配置信息,该配置文件必须由集成系统提供,各个子模块软件提供信息。

  • 11
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值