当前位置: 首页 > news >正文

jenkins+centos7上传发布net6+gitlab

工作中实践了一下jenkins的操作,所以记录一下这次经验,没有使用到docker

先看下成果:

选择发布项目

选择要发布的分支

构建中

发布成功

开始

首先安装好jenkins并注册自己的jenkins账号

因为我们的项目代码管理使用的是gitlab,在开始之前先在jenkins上安装gitlab的插件,安装之后应该是要重启jenkins的服务,后续jenkins的一些页面就会显示一些关于gitlab的一些可配置项

如果遇到一些插件安装不了可能是jenkins的版本与插件的版本不兼容,所以可以考虑升级jenkins或者降级插件版本等等方案。

一、添加服务器的凭据账号密码

这些凭据可用于服务器的登录、git的登录  等等。后续添加节点或者添加项目配置git都会需要

我本次的需求共添加了4个:

两个服务器节点的凭据(项目做负载),一个gitlab账号密码的凭据,一个gitlab api token的凭据。

新增两个服务器的凭据,比如我的  4.61和4.62服务器

然后新增的gitlab账号密码凭据:

这个重点:因enkins要与git相互协作,我们使用gitlab管理代码,所以此处需要添加一个git的凭据。

gitlab配置access token

二、添加服务器的node节点

用于创建项目时绑定要发布的服务器,我是负载两台服务器,所以我加两个,看自己的需求

注意:用法:要选择 Only build jobs with label expressions matching this node

三、 系统配置服务器节点、配置ssh私钥

jenkins按钮目录:

首先配置ssh私钥,需要到jenkins的服务端服务器上找到或者生成秘钥和公钥,但是文件名是这样的id_rsa 和 id_rsa.pub

秘钥   cat /root/.ssh/id_rsa
公钥   cat /root/.ssh/id_rsa.pub

上图的Passphrase我没有所以我没设置

还是在当前页,找到SSH Server然后填SSH Servers的服务,此处我也是添加俩61和62的

先别保存,还是在当前页面查找下面这张图并填写,然后再保存即可

四、配置项目的服务器,分为两部分操作

1、第一部分是jenkins部分的添加和配置项目

添加项目:

添加完后点击项目,然后点击配置进入到这个页面:

需要配置的几个地方:

参数配置:

git配置:

构建触发器的配置:

构建环境:就是发布到哪个服务器和在哪个服务器执行脚本,我还是添加两个4.61和4.62两个服务器,目录一直。

远程目录:就是把项目拉取到:/DATA/build/NZKH-FileDownloadApplication 文件夹下面

Exec命令:这个文件就是我们要执行的命令脚本文件的目录,后面我们会创建这个文件并写命令,包含编译,发布,运行  大概这几个操作

到此为止jenkins客户端就配置完了,其余没选的或者我没截图的,默认就行

2、第二部分是linux部分的配置

这里我就写  4.61的配置了,因为4.62的操作完全一样操作即可

先创建好自己的目录build和publish1,下面会说明他俩用处

build

build文件夹是用来存放git推送过来的文件的。

前面说过配置项目时,选择服务器节点时配置好的相对目录就是build/NZKH-FileDowloadApplication,Exec命令就是nzkh-netcore-prod_build.sh命令文件的绝对目录

DATA下需要手动创建build文件夹

进入build就是git拉取的目录

可以看到他通过jenkins发布后会拉取git存放的项目代码:NZKH-FileDowloadApplication项目、sln、.md文件

此处附上我的gitlab目录

当然nzkh-netcore-prod_build.sh 是我们手动创建的脚本命令文件

创建命令: vi nzkh-netcore-prod_build.sh

讲解一下我的命令文件:

echo '开始构建项目'
#进入NZKH-FileDownloadApplication文件内
cd /DATA/build/NZKH-FileDownloadApplication/
#下面这句是编译并发布代码到/DATA/publish1/NZKH-FileDownloadApplication 文件下
dotnet publish ./NZKH-FileDownloadApplication/NZKH-FileDownloadApplication.csproj -o /DATA/publish1/NZKH-FileDownloadApplicationecho '获取进程id'
#我这里是获取含'FileDownloadApplication'的进程id赋值到containerid
containerid=$(ps -ef | grep 'FileDownloadApplication' | grep -v grep | awk '{print $2}')
#判断进程是否存在如果存在则删除,否则不删除
if [ ! -n "$containerid" ]; thenecho "Container ID found: $containerid"
elseecho "kill process $containerid"#根据进程id杀死这个进程ill -9 "$containerid"
fiecho '切换到发布目录'
cd /DATA/publish1/NZKH-FileDownloadApplication
echo '启动程序'
nohup dotnet NZKH-FileDownloadApplication.dll --urls="http://*:5173" > log.log 2>&1 &

简述逻辑逻辑就是:通过build文件内的文件编译成发布文件到publish1,然后查看是否有运行的程序,有则杀死再进行启动程序,我的程序是写死的5173端口。

Publish1

是用来存放我们通过build编译出来的线上程序的,就是含dll的那些项目文件。

至此就完结了

遇到的错误:

1、ERROR: Error fetching remote repo 'origin’

线上发布代码时遇到拉取不到git仓库。在网上查资料说是清理Workspaces可以解决。但是清理后还是出现同样的错误。

先排查jenkins服务器是否能访问gitlab服务器,若不能访问,检查是否是防火墙禁用22端口,若防护墙没有禁用22端口,那就看是否是阿里云禁用22端口。我出的问题是:我添加了一个4.61和4.62的服务器节点(他们服务器账号密码一样),但是我在配置项目的时候配置的是4.61的服务器节点,但是build now构建的时候,他的工作空间变成了4.62的,这样就会出现发布失败的问题。我的解决方案是:添加服务器节点的时候用法选择(他代表绑定这个节点的项目生效):

另外一个是:“尽可能使用此节点”出错是因为在发布4.61的时候就不空闲了,就会使用其他的节点

2、ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]]

我遇到这个错误,是因为.sh脚本文件没有权限

配置sh文件权限  命令:chmod 777 publish.sh

相关文章:

jenkins+centos7上传发布net6+gitlab

工作中实践了一下jenkins的操作,所以记录一下这次经验,没有使用到docker 先看下成果: 选择发布项目 选择要发布的分支 构建中 发布成功 开始 首先安装好jenkins并注册自己的jenkins账号 因为我们的项目代码管理使用的是gitlab&#xff0c…...

python趣味编程-5分钟实现一个F1 赛车公路游戏(含源码、步骤讲解)

Python 中的 F1 赛车公路游戏及其源代码 F1 Race Road Game是用Python编程语言开发的,它是一个桌面应用程序。 这款 Python 语言的 F1 赛道游戏可以免费下载开源代码,它是为想要学习 Python 的初学者创建的。 该项目系统使用了 Pygame 和 Random 函数。 Pygame 是一组跨平…...

Kafka快速入门

文章目录 Kafka快速入门1、相关概念介绍前言1.1 基本介绍1.2 常见消息队列的比较1.3 Kafka常见相关概念介绍 2、安装Kafka3、初体验前期准备编码测试配置介绍 bug记录 Kafka快速入门 1、相关概念介绍 前言 在当今信息爆炸的时代,实时数据处理已经成为许多应用程序和…...

基于Pytorch的从零开始的目标检测

引言 目标检测是计算机视觉中一个非常流行的任务,在这个任务中,给定一个图像,你预测图像中物体的包围盒(通常是矩形的) ,并且识别物体的类型。在这个图像中可能有多个对象,而且现在有各种先进的技术和框架来解决这个问…...

interview review

M: intrinsic matrix [ f x s c x 0 f y c y 0 0 1 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} ​fx​00​sfy​0​cx​cy​1​ ​ ( c x , c y ) (c_x, c_y) (cx​,cy​): camera center in pixels ( f x , f y …...

layui表头多出一列(已解决)

问题描述 :layui表头多出来一列,但是表体没有内容,很影响美观。 好像是原本的表格有滚轮,我操作放大之后滚轮没有了,但是滚轮自带的表头样式还在, 之后手动把这个样式隐藏掉了,代码如下&#xf…...

​LeetCode解法汇总307. 区域和检索 - 数组可修改

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个数…...

Java源码分析:Guava之不可变集合ImmutableMap的源码分析

原创/朱季谦 一、案例场景 遇到过这样的场景&#xff0c;在定义一个static修饰的Map时&#xff0c;使用了大量的put()方法赋值&#xff0c;就类似这样—— public static final Map<String,String> dayMap new HashMap<>(); static {dayMap.put("Monday&q…...

详解自动化测试之 Selenium

目录 1. 什么是自动化 2.自动化测试的分类 3. selenium&#xff08;web 自动化测试工具&#xff09; 1&#xff09;选择 selenium 的原因 2&#xff09;环境部署 3&#xff09;什么是驱动&#xff1f; 4. 一个简单的自动化例子 5.selenium 常用方法 5.1 查找页面元素&…...

vue监听对象属性值变化

一、官方文档 二、实现方法 方法一、直接根据watch来监听 export default {data() {return {object: {username: ,password: }}},watch: {object.username(newVal, oldVal) {console.log(newVal, oldVal)}} }方法二&#xff1a;利用watch和computed来实现监听 利用computed定…...

Unicode编码的emoji表情如何在前端页面展示(未完成)

Unicode编码的emoji表情如何在前端页面展示 一、首先几个定义解决办法 一、首先几个定义 U1F601 和 0x1F601 表示同一个 Unicode 代码点&#xff0c;即笑脸 Emoji 的代码点。它们之间的区别在于表示方式和数据类型。 1.U1F601 是一种常见的表示方式&#xff0c;也称为 “U” 标…...

基于SSM的设备配件管理和设备检修系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

鸿蒙开发|鸿蒙系统项目开发前的准备工作

文章目录 鸿蒙项目开发的基本流程介绍鸿蒙项目开发和其他项目有什么不同成为华为开发者-注册和实名认证1.登录官方网站 鸿蒙项目开发的基本流程介绍 直接上图&#xff0c;简单易懂&#xff01; 整个项目的开发通过4个模块进行&#xff1a;开发准备、开发应用、运行调试测试和发…...

Evil靶场

Evil 1.主机发现 使用命令探测存活主机&#xff0c;80.139是kali的地址&#xff0c;所以靶机地址就是80.134 fping -gaq 192.168.80.0/242.端口扫描 开放80&#xff0c;22端口 nmap -Pn -sV -p- -A 192.168.80.1343.信息收集 访问web界面 路径扫描 gobuster dir -u http…...

第77题. 组合

原题链接&#xff1a;第77题. 组合 全代码&#xff1a; class Solution { private:vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果void backtracking(int n, int k, int startIndex) {if (path.size() …...

读书笔记:彼得·德鲁克《认识管理》第21章 企业与政府

一、章节内容概述 企业社会责任最重要的维度之一是政企关系。无论对于企业的顺利运作&#xff0c;还是对于政府的顺利运作&#xff0c;政企关系都至关重要。然而&#xff0c;重商主义典范和宪政主义典范这两种传统理论越来越不适应社会现实&#xff0c;越来越失效。虽然当前尚…...

C/C++疫情集中隔离 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C疫情集中隔离 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C疫情集中隔离 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 A同学12月初从国外回来&#xff0c;按照防疫要…...

052-第三代软件开发-系统监测

第三代软件开发-系统监测 文章目录 第三代软件开发-系统监测项目介绍系统监测 关键字&#xff1a; Qt、 Qml、 cpu、 内存、memory 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;和 C 的强大功…...

向量矩阵范数pytorch

向量矩阵范数pytorch 矩阵按照某个维度求和&#xff08;dim就是shape数组的下标&#xff09;1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下&#xff0c;PyTorch会累积梯度&#xff0c;我们需要清除之前的值 范数是向量或…...

NVIDIA Jetson OTA升级

从 JetPack 4.4 开始,可以使用包管理工具升级到下一个 JetPack 版本。请按照以下步骤执行升级。 1,小版本升级 (如,从 JetPack 4.4 升级到 JetPack 4.4.1) 第一步: sudo apt update 第二步: apt list --upgradable 第三步: sudo apt upgrade更新完之后重新启动即可 …...

【算法】算法题-20231118

这里写目录标题 一、16.17. 连续数列二、合并两个有序数组&#xff08;力扣88&#xff09;三、存在重复元素&#xff08;217&#xff09;四、有效的字母异位词&#xff08;242&#xff09; 一、16.17. 连续数列 简单 给定一个整数数组&#xff0c;找出总和最大的连续数列&…...

某60区块链安全之整数溢出漏洞实战学习记录

区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…...

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

Neo4j的全文索引是基于Lucene实现的&#xff0c;但是Lucene默认情况下只提供了基于英文的分词器&#xff0c;下篇文章我们在讨论中文分词器&#xff08;IK&#xff09;的引用&#xff0c;本篇默认基于英文分词来做。我们前边文章就举例说明过&#xff0c;比如我要搜索苹果公司&…...

element-china-area-data使用问题

使用CodeToText报错&#xff0c;下载的时候默认下载最新版本的&#xff0c; 稳定版本5.0.2版本才可以 npm install element-china-area-data5.0.2 -S...

248: vue+openlayers 以静态图片作为底图,并在上面绘制矢量多边形

第248个 点击查看专栏目录 本示例是演示如何在vue+openlayers项目中以静态图片作为底图,并在上面绘制矢量多边形。这里主要通过pixels的坐标作为投射,将静态图片作为底图,然后通过正常的方式在地图上显示多边形。注意的是左下角为[0,0]。 直接复制下面的 vue+openlayers源代…...

thinkphp6(TP6)访问控制器报404(Nginx)

起因&#xff1a; 安装thinphp6后&#xff0c;发现无法访问控制器&#xff0c;直接通过URL访问&#xff0c;就报错404。 错误原因&#xff1a; Nginx不支持URL的 PathInfo。 解决方法&#xff1a; 配置伪静态。 伪静态代码&#xff1a; location / {if (!-e $request_filen…...

腾讯云轻量应用服务器使用场景列举说明

腾讯云轻量应用服务器&#xff08;TencentCloud Lighthouse&#xff09;是新一代开箱即用、面向轻量应用场景的云服务器产品&#xff0c;轻量应用服务器可用于搭建中小型网站、Web应用、博客、论坛、小程序/小游戏、电商、云盘/图床、云端开发测试和学习环境等轻量级、中低负载…...

【漏洞复现】IP-guard WebServer 远程命令执行

漏洞描述 IP-guard是一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。互联网上披露IP-guard WebServer远程命令执行漏洞情报。攻击者可利用该漏洞执行任意命令,获取服务器控制权限。 免责声明 技术文章仅供参考,任何个人和…...

23111704[含文档+PPT+源码等]计算机毕业设计springboot办公管理系统oa人力人事办公

文章目录 **软件开发环境及开发工具&#xff1a;****功能介绍&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff1a; 前端技术&#xff1a;jsc…...

在Linux系统上检测GPU显存和使用情况

在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0c;你可以使用nvidia-smi命令来获取显卡信息&#xff0c…...

内网穿透 cpolar

通过 cpolar软件 可以获得一个临时域名&#xff0c;而这个临时域名是一个 公网ip 下载与安装 下载地址&#xff1a;https://dashboard.cpolar.com/get-started 安装过程中&#xff0c;一直下一步即可 验证 进入官网验证页面复制 authtoken打开 cmd 进入安装目录执行命令&#…...

ai剪辑矩阵系统源码+无人直播系统源码技术开发

开发AI剪辑矩阵系统和无人直播系统源码&#xff0c;需要以下步骤&#xff1a; 1. 市场调研&#xff1a;了解市场需求和竞品情况&#xff0c;明确系统的功能和特点。 2. 系统设计&#xff1a;设计系统的整体架构和功能模块&#xff0c;包括视频剪辑、直播推流、实时互动、数据分…...

2311rust,到38版本更新

1.35.0稳定版 此版本亮点是分别为Box<dyn FnOnce>,Box<dyn FnMut>和Box<dyn Fn>实现了FnOnce,FnMut和Fn闭包特征. 此外,现在可按不安全的函数指针转换闭包.现在也可无参调用dbg!. 为Box<dyn Fn*>实现Fn*装饰特征. 以前,如果要调用在盒子闭包中存储的…...

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…...

Android 屏幕适配

目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素&#xff08;sp&#xff09; 3.3 dp与px的转换 四、解决方案 4.1 今日头条…...

Python使用Mechanize库完成自动化爬虫程序

目录 引言 一、了解Mechanize库 二、安装Mechanize库 三、使用Mechanize库发送HTTP请求 四、使用Mechanize库解析HTML页面 五、使用Mechanize库模拟用户输入 六、使用Mechanize库处理JavaScript动态生成的内容 七、使用Mechanize库处理登录和表单提交的常见问题 总结 …...

【Shell脚本入门】

Shell中的特殊符号 1.$ 美元符号&#xff0c;用来表示变量的值。 如变量NAME的值为Mike&#xff0c;则使用$NAME就可以得到“Mike”这个值。2.# 井号&#xff0c;除了做为超级用户的提示符之外&#xff0c;还可以在脚本中做为注释的开头字母&#xff0c;每一行语句中&#xff…...

redis大全

redis-cli 常用命令 redis常用命令 redis数据结构 redis数据结构 redis持久化存储 持久化存储 redis事务 redis事务 redis管道 管道 redis7集群搭建 集群 redis常见问题以及解决方案 常见问题以及解决方案 redis面试题 面试题 redis高级案列case 高级case sp…...

linux rsyslog日志采集格式设定五

linux rsyslog日志采集格式设定五 1.创建日志接收模板 打开/etc/rsyslog.conf文件,在GLOBAL DIRECTIVES模块下任意位置添加以下内容 命令: vim /etc/rsyslog.conf 测试:rsyslog.conf文件结尾添加以下内容 $template ztj,"%fromhost-ip% %app-name% %syslogseveri…...

uni-app:如何配置uni.request请求的超时响应时间(全局+局部)

方法一&#xff1a;全局配置响应时间 一、进入项目的manifest.json的代码视图模块 二、写入代码 "networkTimeout": {"request": 5000 }, 表示现在request请求响应时间最多位5秒 方法二&#xff1a;局部设置响应时间 一、直接在uni.request中写入属性…...

AI中文版怎么用,版本分享,GPT官网入口

网页版上线啦&#xff0c;在线助力大学生、上班族的高效生活&#xff01; GPT4.0是OpenAI最新推出的聊天模型&#xff0c;它的语言理解和生成能力比以前的版本更强大。对于忙碌的上班族来说&#xff0c;GPT4.0能帮助你高效处理工作中的大部分写作任务&#xff0c;比如撰写报告…...

mysql数据库通过binlog恢复数据

1&#xff1a;通过命令查询是否开启 show variables like log_bin2&#xff1a;查看binlog文件存放目录 show variables like %datadir%3&#xff1a;通过positon恢复 mysqlbinlog --start-position219 --stop-position636 --databasetest "/data/binlog.00001" …...

【unity插件】UGUI的粒子效果(UI粒子)—— Particle Effect For UGUI (UI Particle)

文章目录 前言插件地址描述特征Demo 演示如何玩演示对于 Unity 2019.1 或更高版本对于 Unity 2018.4 或更早版本 用法基本上是用法使用您现有的 ParticleSystem 预制件带 Mask 或 RectMask2D 组件脚本用法UIParticleAttractor 组件开发说明常见问题解答&#xff1a;为什么我的粒…...

高教社杯数模竞赛特辑论文篇-2023年C题:基于历史数据的蔬菜类商品定价与补货决策模型(附获奖论文及R语言和Python代码实现)(中)

目录 六、 问题三模型建立与求解 6.1 问题三求解思路 6.2 问题三模型建立 6.2.1 模型假定和预处理...

element-ui plus 文件上传组件,设置单选,并支持替换和回显

遇到的坑&#xff1a; 1、设置limit属性为1后&#xff0c;on-change属性不生效 2、on-exceed属性虽然值改变&#xff0c;但是回显没有随之变化 3、由于element-ui plus版本file-list值出现问题 最后的解决方案决定不设置 limit 属性&#xff0c;通过 on-change 中的判断来控制数…...

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…...

SpringMVC log4j1升级log4j2

整个升级过程耗时5个小时&#xff0c;中间耗时最长的是找合适的包和升级后日志无法打印以及无法控制日志输出位置&#xff0c;完成后感觉其实很简单&#xff0c;如果一开始就能看到我现在写的笔记&#xff0c;可能几分钟就搞定了。 第一步&#xff1a;首先上log4j2所需要的包 …...

MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(十一)

目录 几个相关概念 1、焦点(focus) 2、弥散圆(circle of confusion) 3、景深(depth of field) 知识储备 线阵相机...

UE的PlayerController方法Convert Mouse Location To World Space

先上图&#xff1a; Convert Mouse Location To World这是PlayerController对象中很重要的方法。 需要说明的是两个输出值。 第一个是World Location&#xff0c;这是个基于世界空间的位置值&#xff0c;一开始我以为这个值和当前摄像机的位置是重叠的&#xff0c;但是打印出来…...

【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型

1. 引入 QStandardItemModel类提供了一个通用的模型&#xff0c;用于存储自定义数据。 以下是其用法&#xff1a;该类属于gui模块&#xff0c;因此在.pro中&#xff0c;需添加QT gui&#xff0c;如果已存在&#xff0c;则无需重复添加。 首先&#xff0c;引入头文件&#xff…...