【问题标题】:How to print version of a Qt GUI application to console如何将 Qt GUI 应用程序的版本打印到控制台
【发布时间】:2016-10-19 08:12:35
【问题描述】:

我有一个使用 Qt Widgets 编写的 GUI 应用程序。我已经添加了版本控制,并且我也打算编写一个更新管理器。为了使它工作,更新管理器必须能够确定我的应用程序的版本。我想通过使用版本开关运行我的应用程序然后解析它的输出来实现这一点。我做了一项研究,发现 Qt 有某种内置的解决方案。

这是一个例子:

#include "mainwindow.h"
#include <QApplication>
#include <QCommandLineParser>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QApplication::setApplicationVersion("1.0.0");

    QCommandLineParser parser;
    auto versionOption = parser.addVersionOption();
    parser.process(app);

    if (parser.isSet(versionOption))
    {
        MainWindow w;
        w.show();
        return app.exec();
    }

    return 0;
}

如果我使用 -v 或 --version 命令行开关启动此应用程序,我会收到一个包含版本信息的消息框。

我需要实现相同的,只有信息应该打印到标准输出。如果应用程序是使用版本开关启动的,它应该只在控制台中显示版本然后关闭。

如何使用 GUI 应用程序将版本信息打印到标准控制台输出?

【问题讨论】:

  • Qt 安装程序框架怎么样?它为已部署的应用程序提供更新功能,就像您从 Qt 安装中了解的那样。 doc.qt.io/qtinstallerframework/index.html
  • 我宁愿实现一个简单的解决方案,然后增加复杂性,而不是使用现成的解决方案并试图找出代码背后的原因。
  • 好,你的选择。那么为什么不使用一个简单的文本文件,其中包含驻留在应用程序目录中的当前版本。
  • 这也可能是一个解决方案,如果我的原始问题仍未得到解答,我将使用它。

标签: c++ qt versioning


【解决方案1】:

我们在 cmets 中清除了一些分数,让我们继续前进。 ;)

查看文档 (http://doc.qt.io/qt-5/qapplication.html#details)。在详细信息部分,您会看到如何正确解析和处理命令行选项的合理方法。

在这里 (https://stackoverflow.com/a/3886128/6385043) 您可以看到写入标准输出的可能性。请注意QDebug 警告。

在我看来,坚持使用文本文件。您可以在构建过程中使用变量VERSION 使用qmake 生成它,也可以使用QApplication::setApplicationVersion(QString)

【讨论】:

  • 是的。我做了一些进一步的研究,这似乎是迄今为止最好的方法。
  • Qt 的好处是,做研究工作,因为有文档。 ;)
猜你喜欢
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多