LidarView之定制版本号

news2024/9/23 9:35:09

介绍

LidarView软件需要关注2个版本号:1.Application版本号;2.安装包版本号

Application版本号

改变LV_VERSION_FULL可达到改变软件版本号的目的

SET(LV_VERSION_FULL "V1.3.0")

标题栏版本号

在这里插入图片描述

关于对话框

在这里插入图片描述

安装包版本号

在Inno Setup Compiler iss脚本里边通过指定宏MyAppVersion改变安装包版本号

#define MyAppName "LidarViewer"
#define MyAppVersion "V1.3.0"
#define MyAppPublisher "Copyright @2023 lidarviwer"
#define MyAppURL ""
#define MyAppExeName "LidarViewer.exe"
#define MyAppAssocName MyAppName + " File"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt

代码分析

ParaViewClient.cmake里边定义了paraview_client_add函数,该函数在Application目录下的CMakeLists.txt文件里边调用,需要给LV_VERSION_FULL赋值传递软件版本号信息

paraview_client_add(
  NAME ${SOFTWARE_NAME} #Name of the Target
  NAMESPACE "LidarView"
  VERSION ${LV_VERSION_FULL}
  APPLICATION_NAME "${SOFTWARE_NAME}"
  ORGANIZATION "${SOFTWARE_VENDOR}"
  TITLE "${SOFTWARE_NAME} ${LV_VERSION_FULL} ${LV_BUILD_PLATFORM}"
  SPLASH_IMAGE     "${CMAKE_CURRENT_SOURCE_DIR}/SoftwareInformation/Splash.jpg"
  BUNDLE_ICON      "${CMAKE_CURRENT_SOURCE_DIR}/logo.icns"
  APPLICATION_ICON "${CMAKE_CURRENT_SOURCE_DIR}/SoftwareInformation/logo.ico"
  
  REQUIRED_PLUGINS LidarPlugin VelodynePlugin

  MAIN_WINDOW_CLASS vvMainWindow
  MAIN_WINDOW_INCLUDE vvMainWindow.h
  SOURCES ${source_files}
  APPLICATION_XMLS
    ${CMAKE_CURRENT_SOURCE_DIR}/vvSources.xml
    ${CMAKE_CURRENT_SOURCE_DIR}/vvFilters.xml
  
  RUNTIME_DESTINATION ${LV_INSTALL_RUNTIME_DIR}
  LIBRARY_DESTINATION ${LV_INSTALL_LIBRARY_DIR}
)

② 然后paraview_client_add根据软件名词、版本号等信息自动生成pqLidarViewInitializer对象,软件版本会在Initialize成员函数里边调用

#if _paraview_client_TITLE
  this->MainWindow->setWindowTitle("LidarView V1.3.0 Windows-AMD64");
#endif

aboutDialog.py里边的showDialog函数会对about对话框的版本号进行设置

def showDialog(mainWindow):

    loader = QtUiTools.QUiLoader()
    uifile = QtCore.QFile(':/vvResources/vvAboutDialog.ui')
    if not uifile.open(uifile.ReadOnly):
        print("Canno't open the ui for the about dialog.")
        return

    dialog = loader.load(uifile, mainWindow)
    uifile.close()
    dialog.setModal(True)

    def w(name):
        for widget in dialog.children():
            if widget.objectName == name:
                return widget

    image = w('splashLabel')
    splash = image.pixmap.scaled(image.pixmap.width()/2.0, image.pixmap.height()/2.0)
    image.setPixmap(splash)
    image.adjustSize()

    appName = mainWindow.windowTitle.split(" ")[0]
    appVersionTag = mainWindow.windowTitle.split(" ")[1]
    appBitTag = mainWindow.windowTitle.split(" ")[2]
    dialog.windowTitle = "About " + appName + " ..."
    copyrightText = '''<h1>{0} {1} {2}</h1><br/>
                       Provided by <a href=""></a><br />
                       <br />
                    '''.format(appName, appVersionTag, appBitTag)
    w('copyrightLabel').setText(copyrightText)
    
    textBoxContent = '''<h4>License</h4>
                        LidarViewer is provided under the Apache License 2.0.<br /><br />
                        The initial developer of some parts of the framework, which are 
                        copied from, derived from, or inspired by LidarView open source project.
                        <br />
                     '''
    w('detailsLabel').setText(textBoxContent)
    
    
    button = w('closeButton')
    closeIcon = QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_DialogCloseButton)
    button.setIcon(closeIcon)
    button.connect(button, QtCore.SIGNAL('clicked()'), dialog, QtCore.SLOT('close()'))
    dialog.adjustSize()
    dialog.setFixedSize(dialog.size)

    dialog.exec_()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2138972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【退役之再次线上部署】Spring Boot + VUE + Nginx + MySQL

这篇博客写在凌晨 4 点 20 分&#xff0c;这个时候我刚线上部署完成 web 项目&#xff0c;自己写的全栈项目 这个点儿&#xff0c;也睡不着了&#xff0c;索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的&#xff0c;所以写在前面 Nginx 配置文件 location location /a…

如何做系统架构?从动态系统思考的角度

在动态系统思考的背景下&#xff0c;系统架构不再只是一个静态的、结构化的设计&#xff0c;而是一个随着时间推移、基于不同要素互动产生涌现行为的动态过程。系统架构师的任务不仅仅是定义系统的形态和结构&#xff0c;更是通过剖析系统的互动网络、功能涌现和使用场景&#…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《计及抢修人员调度的配电网信息-物理协同恢复策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

个人随想-向量数据库,你到底应该选择谁?

随着大模型的新起&#xff0c;vectorstore这1、2年也非常的火。从以前只能用chroma到现在几十种向量数据库&#xff0c;选都选不过来。 以我接触过的很多公司来说&#xff0c;他们去选择向量数据库的时候&#xff0c;很多都和迷茫&#xff0c;不知道应该选择哪个向量数据库&am…

MySQl篇(数据类型)(持续更新迭代)

目录 常见类型一&#xff1a;数值类型 常见类型二&#xff1a;字符串类型 一、文本字符串类型 1. char & varchar 1.1. CHAR(M)类型 1.2. VARCHAR(M)类型 1.3. 两者应用 2. enum & set 二、二进制字符串类型 1. BINARY & VARBINARY类型 2. 二进制字符串和…

C++ IO框架

文章目录 I/O 复用概述I/O 模型一个输入操作的两个阶段 select 函数概述详细解析函数内容详解select总结 poll 函数概述详细解析函数内容详解 epoll 函数概述基础API注意事项总结一下select, poll, epoll的区别 Reactor 和 Proactor概述概念服务器连接多个客户端的业务场景解决…

【DVWA】——File Upload(文件上传)

&#x1f4d6; 前言&#xff1a;文件上传漏洞是由于对上传文件未作过滤或过滤机制不严&#xff08;文件后缀或类型&#xff09;&#xff0c;导致恶意用户可以上传脚本文件&#xff0c;通过上传文件可达到控制网站权限的目的。 目录 &#x1f552; 1. Low&#x1f552; 2. Mediu…

Window10安装多智能体强化学习平台(SMAC)

基本步骤可以参照博客&#xff1a;window10安装多智能体强化学习平台&#xff08;SMAC&#xff09;_conda如何安装smac库-CSDN博客 注意1&#xff1a;上面所涉及的python第三方库版本不一定要安装博客指定版本。 注意2&#xff1a;星际争霸需要安装国际服(国服不支持)&#x…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁&#xff1a; 锁重试和看门狗机制&#xff1a; 主从一致性&#xff1a; 首先引入依赖&#xff0c;配置好信息 3.使用Redisson的分布式锁 可重入锁&#xff1a; 可重入锁实现是通过redsi中的hash实现的&#xff0c;key依旧是业务名称加id&#xff0c;然后第一个…

正式发售!《黑神话:悟空》背后的技术力量——UE5与实时云渲染

千呼万唤始出来&#xff0c;《黑神话&#xff1a;悟空》终于在今年8月发售了&#xff0c;相信大家都已经玩起来了&#xff01; 作为国产游戏的画质巅峰之作&#xff0c;《黑神话&#xff1a;悟空》凭借其令人叹为观止的画面质量和游戏体验&#xff0c;赢得了广泛的好评。这一切…

实时监控分析广告数据跳转统计平台源码

广告跳转实时分析页面统计系统&#xff0c;可选择生成html页面样式&#xff0c;可自定义设置页面域名后缀&#xff0c;可指定跳转指定网址&#xff0c; 可记录单个页面的访问记录&#xff0c;可对生成的单个链接进行备注&#xff0c;自定义等待时间进行跳转。 源码下载&#…

内网渗透- 内网渗透的基本知识

攻击流程讲解 内网介绍 内网也指局域网&#xff0c;是指在某一区域内由多台计算机互联而成的计算机组&#xff0c;组网范围通常在数千米以内。在局域网中&#xff0c;可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等。内网是封闭的…

Python 课程11-Web 开发

前言 Web 开发已经成为现代软件开发的核心领域之一&#xff0c;许多应用程序和服务都通过 Web 来与用户和其他系统交互。Python 作为一门广泛使用的编程语言&#xff0c;提供了多种 Web 开发框架&#xff0c;其中最流行的两个框架是 Flask 和 Django。 Flask 是一个轻量级的 W…

Dubbo SPI源码

文章目录 Dubbo SPI使用方式AOP功能源码剖析SPI注解1.获取加载器2.获取拓展实例对象3.创建拓展类的实例对象 Dubbo SPI Dubbo 的 SPI&#xff08;Service Provider Interface&#xff09;机制是一种强大的扩展机制&#xff0c;它允许开发者在运行时动态地替换或增加框架的功能。…

2-95 基于matlab的模板定位

基于matlab的模板定位。利用①相关匹配&#xff08;Correlation Matching&#xff09;、②基于Hausdorff距离匹配方法 及③考虑对场景图象距离变换&#xff08;Distance Transform&#xff09;的Hausdorff距离匹配方法,实现模板目标在场景图象中的定位。程序已调通&#xff0c;…

XShell快速连接虚拟机(Ubuntu系统)

目录 前言 一 (XShell)(虚拟机 )(Ubuntu)下载 二 虚拟机的ip查找 三 虚拟机中安装连接环境 四 开启ssh-server服务 五 验证是Ubuntu是否开启ssh-server服务 六 连接XShell软件 前言 对于刚开始探索 Linux 世界的新手来说&#xff0c;拥有一台自己的服务器可能并不现实。幸运的…

linux服务器配置及服务器资源命令使用查看

在做i性能压测之前&#xff0c;所了解的服务器配置&#xff1a;CPU、内存、硬盘、网络 一、查看cpu信息 常用命令&#xff1a;cat /proc/cpuinfo或者lscpu、pidstat等 需要关注的&#xff1a; Architecture: x86_64 # 架构信息&#xff0c;表示系统的CPU架构为x86_64&#…

业务资源管理模式语言14

第三节&#xff1a;在前面讨论的Resource Transcations&#xff08;资源事务&#xff09;中有许多共同的行为。其中一个行为可以包含多个项目&#xff0c;每个项目对应一个不同的资源&#xff08;ItemizeTheResourceTransaction&#xff08;11&#xff09;。事务可以产生一些报…

GitLab权限及设置

之前很少关注这些&#xff0c;项目的权限&#xff0c;一般由专门的管理人员设置。 但自己创建的项目自己可以设置权限。下面是一些笔记。 GitLab中用户权限_gitlab 权限-CSDN博客 开发中遇到要将自己这块的代码上传到Git&#xff0c;由其他组的同事拉取后继续开发。上传代码后…

【JVM】概述

前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架&#xff08;如Spring、MyBatis等&#xff09;构成。在国内&#xff0c;有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富&…