Qt 显示git版本信息

项目场景:

项目需要在APP中显示当前的版本号,考虑到git共同开发,显示git版本,查找bug或恢复设置更为便捷。


使用需求:

显示的内容包括哪个分支编译的,版本号多少,编译时间,以及是否Release版本,例如以下类似显示。

"dev_6c01ges6116e__2023-08-08[16:05:37]_DI"
"origin_9n5ggi20ckah__2023-08-08[16:05:37]"

 

解决方案:

大致思路是通过脚本,预先拉取git信息到某文件,应用程序使用时拉取该文件内的数据。

  • linux脚本  .sh
#!/usr/bin/env bash

VERSION_FILE=./winver.h

VERSION_STR=$(git rev-parse --short=12 HEAD)
BRANCH_STR=$(git rev-parse --abbrev-ref HEAD)
BUILD_TIME=`date +"%Y-%m-%d[%H:%M:%S]"`
echo $BUILD_TIME
[ -n "$(git status --porcelain)" ] &&GIT_IS_DIRTY="_DI"

UPDATE_LINE_TO="#define PC_VERSION \"${BRANCH_STR}_${VERSION_STR}__${BUILD_TIME}${GIT_IS_DIRTY}\""

echo $UPDATE_LINE_TO >$VERSION_FILE

  • windows脚本 .bat
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set curdate=%%a-%%b-%%c)
for /f "tokens=1-3 delims=:." %%a in ('echo %time%') do (set curtime=%%a:%%b:%%c)
set BUILD_TIME=%curdate%[%curtime%]
echo %BUILD_TIME%

for /f "tokens=*" %%a in ('git rev-parse --short^=12 HEAD') do (set VERSION_STR=%%a)
for /f "tokens=*" %%a in ('git rev-parse --abbrev-ref HEAD') do (set BRANCH_STR=%%a)

set GIT_IS_DIRTY=
for /f "tokens=*" %%a in ('git status --porcelain^|find /v /c ^"^"') do (set dc=%%a)
if dc gtr 0 set GIT_IS_DIRTY=_DI

set UPDATE_LINE_TO=#define WIN_VERSION "%BRANCH_STR%_%VERSION_STR%__%BUILD_TIME%%GIT_IS_DIRTY%"
echo %UPDATE_LINE_TO%>winversion.h

  • 在项目.pro中添加以下内容
versionTarget.target = version.cpp
versionTarget.depends = FORCE
win32 {
    versionTarget.commands = cd $$PWD && pre_build.bat
}
unix {
    versionTarget.commands = cd $$PWD;./pre_build.sh
}

PRE_TARGETDEPS +=  version.cpp
QMAKE_EXTRA_TARGETS += versionTarget

程序中直接调用

winver.h

#define WIN_VERSION "dev_6c01ges6116e__2023-08-08[16:05:37]_DI"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要绘制饼状图的Git源码,可以使用Qt和ECharts两个库。 首先,使用Qt来创建一个图形界面应用程序。在Qt中,可以使用QChart来绘制基本的饼状图。需要在.pro文件中引入Qt Charts模块,然后创建一个QChart对象,设置饼状图的样式和数据,最后将QChart对象显示在界面上。具体的代码可以参考以下示例: ```cpp #include <QtWidgets/QApplication> #include <QtCharts/QChartView> #include <QtCharts/QPieSeries> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个QChart对象 QtCharts::QChart chart; // 创建一个QPieSeries对象,并设置数据 QtCharts::QPieSeries *series = new QtCharts::QPieSeries(); series->append("Apple", 1); series->append("Banana", 2); series->append("Orange", 3); // 将series添加到chart中 chart.addSeries(series); // 创建一个QChartView对象,并设置显示的chart QtCharts::QChartView *chartView = new QtCharts::QChartView(&chart); chartView->setRenderHint(QPainter::Antialiasing); chartView->show(); return a.exec(); } ``` 然后,使用ECharts来绘制饼状图的Git源码也非常简单。首先,需要引入ECharts的JavaScript文件。然后,创建一个HTML文件,并在其中使用JavaScript代码来绘制饼状图。具体的代码可以参考以下示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts Pie Chart</title> <script src="echarts.min.js"></script> </head> <body> <div id="chart" style="width: 600px; height: 400px;"></div> <script> // 创建一个实例,并设置饼状图的配置项和数据 var chart = echarts.init(document.getElementById('chart')); var option = { title: { text: 'ECharts Pie Chart' }, series: [{ type: 'pie', data: [ {name: 'Apple', value: 1}, {name: 'Banana', value: 2}, {name: 'Orange', value: 3} ] }] }; // 使用配置项和数据绘制饼状图 chart.setOption(option); </script> </body> </html> ``` 以上是使用Qt和ECharts绘制饼状图的Git源码。可以根据自己的需求选择合适的库和方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值