Qt——界面优化
一.QSS
1.背景
在网页前端开发领域中, CSS 是⼀个至关重要的部分。 描述了⼀个网页的 "样式"。 从而起到对网页美化的作用。 所谓样式,包括不限于大小,位置,颜色,背景,间距,字体等等。
Qt 仿照 CSS 的模式, 引入了 QSS, 来对 Qt 中的控件做出样式上的设定, 从而允许程序猿写出界面更好看的代码。
如果通过 QSS 设置的样式和通过 C++ 代码设置的样式冲突, 则 QSS 优先级更高。
2.基本语法
选择器 {
属性名: 属性值;
}
其中:
- 选择器 描述了 "哪个 widget 要应用样式规则".
- 属性 则是⼀个键值对, 属性名表示要设置哪种样式, 属性值表示了设置的样式的值.
例如:
QPushButton { color: red; }
表示针对界面上的所有 QPUshButten ,都把文字的颜色设置为红色。
3.选择器
QSS 的选择器⽀持以下几种:
全局选择器,如:*:选择所有的 widget.
类型选择器,如:QPushButton :选择所有的 QPushButton 和 其子类的控件.
类选择器,如: .QPushButton :选择所有的 QPushButton 的控件,不会选择子类.
ID 选择器,如:#pushButton_2 :选择 objectName 为 pushButton_2 的控件.
后代选择器,如:QDialog QPushButton :选择 QDialog 的所有后代(子控件, 孙子控件等等)中的 QPushButton.
子选择器,如:QDialog > QPushButton :选择 QDialog 的所有子控件中的 QPushButton.
并集选择器,如:QPushButton, QLineEdit, QComboBox :选择 QPushButton, QLineEdit, QComboBox 这三种控件. (即接下来的样式会针对这三种控件都生效).
属性选择器,如:QPushButton[flat="false"] :选择所有 QPushButton 中, flat 属性为 false 的控件.
(1)子控件选择器
有些控件的内部包含多个子控件,例如QComboBox 的下拉后的面板, QSpinBox 的上下按钮等。
这样的子控件也是可以设置其样式的,可以通过子控件选择器“::” , 针对上述子控件进行样式设置。例如下拉框的下拉按钮就可以通过子控件选择器QComboBox::down-arrow来选中。
更多的子控件,还请自行查询Qt文档来进行了解。
(2)伪类选择器
伪类选择器, 是根据控件所处的某个状态被选择的. 例如按钮被按下, 输入框获取到焦点, 鼠标移动到某个控件上等.
当状态具备时, 控件被选中,样式生效。当状态不具备时,控件不被选中,样式失效。
使用“:”的方式定义伪类选择器。
常用的伪类选择器有:
:hover :鼠标放到控件上
:pressed :鼠标左键按下时
:focus :获取输入焦点时
:enabled :元素处于可用状态时
:checked :被勾选时
:read-only :元素为只读状态时
这些状态可以使用 ! 来取反,比如 :!hover 就是鼠标离开控件时, :!pressed 就是鼠标松开。
4.基本使用
(1)设置单独控件样式
设置控件的颜色,可以使用如下接口:
setStyleSheet(
选择器 {
属性名: 属性值;
}
);
例如,设置按钮1的文本颜色为红色:
ui->pushButton->setStyleSheet("QPushButton {color : red}");
结果如下:
能够看出,按钮1的文本被设置为红色了,通过此种方法,可以将选择的单独的控件设置颜色。
除了为单独的控件设置之外,还可以同时对界面中的多个相同控件一起设置颜色:
this->setStyleSheet("QPushButton {color : red}");
this表示整个widget界面,如此代码,就是将整个界面中的所有按钮控件的文本颜色都设置的红色,结果如下:
(2)设计全局样式
我们希望将某些控件的样式放在一起管理,而不是单独的分散的设置,则可以在main函数中进行设置:
结果如下:
设置全局样式之后,如果需要对个别的控件进行局部微调,则可以在widget.cpp中设置:
ui->pushButton->setStyleSheet("QPushButton {color : green}");
ui->pushButton_2->setStyleSheet("QPushButton {font-size : 50px}");
例如将按钮1颜色改为绿色,按钮2的像素改为50px,结果如下:
能够看出,如果控件的样式冲突,则局部设置的优先级高于全局,如果样式不冲突,则不同的样式可以层叠。
(3)样式与代码分离
上述设置样式的方式,都是耦合在代码之中,这样的方式显然是有弊端的,因此我们希望能够将样式的设置与代码进行分离,Qt Designer中集成了这样的功能,允许将样式写入.ui文件中:
在整个大widget控件上选择改变样式表,在样式表中设置样式:
就可以直接应用到整个ui上:
如果想要改变某个控件的样式,就右键点击该控件,同样选择改变样式表,就可以为该单独的控件设置样式。
这里将按钮2单独设置为绿色。
除此之外,还可以通过在当前目录中新建一个.qss文件,在该文件中编辑样式,再将该文件导入.qrc文件中,最后通过文件操作读取样式进行设置。
无论是通过哪种方式来设置样式,都建议不要混用多种方式,一种方式用到底,以免出现问题时难以查找到问题所在。
5.盒子模型
一个控件也是有其内部的独立结构模型的,⼀个遵守盒模型的控件, 由上述几个部分构成:
-
Content 矩形区域: 存放控件内容. 比如包含的文本/图标等.
-
Border 矩形区域: 控件的边框.
-
Padding 矩形区域: 内边距. 边框和内容之间的距离.
-
Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形边界的距离
默认情况下, 外边距, 内边距, 边框宽度都是 0.
可以通过⼀些 QSS 属性来设置上述的边距和边框的样式。
margin :设置四个方向的外边距. 复合属性.
padding:设置四个方向的内边距. 复合属性.
border-style:设置边框样式
border-width:边框的粗细
border-color:边框的颜色
border:复合属性, 相当于 border-style + border-width + border-color
下面用一个例子来具体设置一下一个控件的盒子模型样式:
这里我们用代码方式创建了一个按钮控件,并且将它的位置放在左上角,下面来设置它的内外边距和边框样式:
button->setStyleSheet("QPushButton {border : 10px solid red; margin: 20px; padding: 5px;}");
将边框设置为10px,实线,红色,外边距为20px,内边距为5像素,结果如下:
不难看出,整个按钮的大小尺寸仍未100×100,外边距表示边框与控件初始大小范围的间距,内边距则表示边框与控件内容之间的间距。
二.绘图API
1.基本概念
虽然 Qt 已经内置了很多的控件, 但是不能保证现有控件就可以应对所有场景。
很多时候我们需要更强的 "自定制" 能力。
Qt 提供了画图相关的 API, 可以允许在窗口上绘制任意的图形形状, 来完成更复杂的界面设计。
绘图 API 核心类
QPainter:"绘画者". 用来绘图的对象, 提供了⼀系列 drawXXX 方法, 可以允许我们绘制各种图形.
QPaintDevice:"画板". 描述了 QPainter 把图形画到哪个对象上. 像之前用过的 QWidget 也是⼀种 QPaintDevice (QWidget 是 QPaintDevice 的子类) .
QPen:"画笔". 描述了 QPainter 画出来的线是什么样的.
QBrush:"画刷". 描述了 QPainter 填充⼀个区域是什么样的.
绘图 API 的使用, 一般不会在 QWidget 的构造函数中使用, 而是要放到 paintEvent 事件中.
paintEvent 会在以下情况下被触发:
- 控件首次创建.
- 控件被遮挡, 再解除遮挡.
- 窗口最小化, 再恢复.
- 窗口最大化, 再恢复.
- 控件大小发生变化时.
- 主动调用 repaint() 或者 update() 方法. (这两个方法都是 QWidget 的方法).
因此, 如果把绘图 api 放到构造函数中调用, 那么⼀旦出现上述的情况, 界⾯的绘制效果就无法确保符合预期了。
2.绘制各种形状
首先需要在widget.h文件中声明事件函数:
void paintEvent(QPaintEvent* event);
之后在widget.cpp文件中定义事件函数:
void Widget::paintEvent(QPaintEvent *event)
{(void) event;//创建绘图对象QPainter painter(this);//绘制线段painter.drawLine(0,50,200,50);//绘制矩形painter.drawRect(100,100,150,150);//绘制圆形painter.drawEllipse(250,250,300,300);
}
这些函数的参数表示各不相同:
- 对于线段:前两个表示起点坐标,后两个表示终点坐标。
- 对于矩形:前两个表示矩形左上角所处位置,后两个表示所绘矩形的长度和宽度。
- 对于圆形:圆形的这四个坐标表示其外接矩阵的构建方式,通过其外接矩阵来构建圆形。
结果如下:
上述绘制的图形都是其最基础的样式,如果想要改变其样式,则需要通过QPen 画笔对象来实现:
void Widget::paintEvent(QPaintEvent *event)
{(void) event;//创建绘图对象QPainter painter(this);//创建画笔对象QPen pen;pen.setColor("red");painter.setPen(pen);//绘制圆形painter.drawEllipse(100,100,300,300);
}
例如将圆的颜色设置为红色,结果如下:
除此之外,还可以设置图形的填充颜色,通过QBrush对象实现:
void Widget::paintEvent(QPaintEvent *event)
{(void) event;//创建绘图对象QPainter painter(this);//创建画笔对象QPen pen;pen.setColor("red");painter.setPen(pen);//创建画刷对象QBrush brush;brush.setColor("green");//设置实心填充brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);//绘制圆形painter.drawEllipse(100,100,300,300);
}
例如将圆的内部实心填充为绿色:
画刷的填充方式有很多,具体可以查询Qt文档获取。
相关文章:
Qt——界面优化
一.QSS 1.背景 在网页前端开发领域中, CSS 是⼀个至关重要的部分。 描述了⼀个网页的 "样式"。 从而起到对网页美化的作用。 所谓样式,包括不限于大小,位置,颜色,背景,间距,字体等等…...
Qt Designer and Python: Build Your GUI
1.install pyside6 2.pyside6-designer.exe 发送到桌面快捷方式 在Python安装的所在 Scripts 文件夹下找到此文件。如C:\Program Files\Python312\Scripts 3. 打开pyside6-designer 设计UI 4.保存为simple.ui 文件,再转成py文件 用代码执行 pyside6-uic.exe simpl…...
HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法
HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法 翻遍了CSDN,试了所有办法都没办法,最后偶然间竟然解决了 解决方法其实很简单:本地模拟器下载路径下面不能有中文。。。。。 切换正确路径以后,成功运行,哦…...
java中的算数运算符
1.java中的加法是“”。 简单数字的相加对于byte.short.char.int类型数字相加时进行整形提升至int,对于数据类型大于int的long.float.double数据类型有参与计算时,需要进行整形提升至最高的数据类型。 有字符串类型的相加,将数字视为字符串进行字符串的…...
【数据结构】二叉树
二叉树 1. 树型结构(了解)1.1 概念1.2 概念(重要)1.3 树的表示形式(了解)1.4 树的应用 2. 二叉树(重点)2.1 概念2.2 两种特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储2.5 二叉树的…...
websocket实现
由于安卓资源管理器展示的路径不尽相同,各种软件保存文件的位置也不一定一样.对于普通用户上传文件时,查找文件可能是一个麻烦的事情.后来想到了一个办法,使用pc端进行辅助上传. 文章目录 实现思路1.0 实现定义web与客户端通信数据类型和数据格式web端websocket实现web端对客户…...
AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言
1. 定义目标与需求 首先,要明确你希望AI智能体做什么。是自动化任务、数据分析、自然语言处理,还是其他功能?明确目标可以帮助你选择合适的技术和方法。 2. 选择开发平台与工具 开发AI智能体的软件时,你需要选择适合的编程语言、…...
电梯系统的UML文档12
5.2.1 DoorControl 的状态图 图 19: DoorControl 的状态图 5.2.2 DriveControl 的状态图 图 20: DriveControl 的状态图 5.2.3 LanternControl 的状态图 图 21: LanternControl 的状态图 5.2.4 HallButtonControl 的状态图 图 22: HallButtonControl 的状态图 5.2.5 CarB…...
【华为路由的arp配置】
华为路由的arp配置 ARP:IP地址与MAC地址的映射。 R1: g0/0/0:10.1.1.254/24 g0/0/1:10.1.2.254/24 PC1: 10.1.1.1/16 PC2: 10.1.1.2/16 PC3: 10.1.2.3/16 动态ARP 查看PC1的arp表,可以看到,列表为空。 查看R1的arp表 在PC3上ping命令测…...
Web 代理、爬行器和爬虫
目录 Web 在线网页代理服务器的使用方法Web 在线网页代理服务器使用流程详解注意事项 Web 请求和响应中的代理方式Web 开发中的请求方法借助代理进行文件下载的示例 Web 服务器请求代理方式代理、网关和隧道的概念参考文献说明 爬虫的工作原理及案例网络爬虫概述爬虫工作原理 W…...
node 爬虫开发内存处理 zp_stoken 作为案例分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言 主要说3种我们补环境过后如果用…...
【Samba】Ubuntu20.04 Windows 共享文件夹
【Samba】Ubuntu20.04 Windows 共享文件夹 前言整体思路检查 Ubuntu 端 和 Windows 网络通信是否正常创建共享文件夹安装并配置 Samba 服务器安装 Samba 服务器创建 Samba 用户编辑 Samba 配置文件重启 Samba 服务器 在 Windows 端 访问 Ubuntu 的共享文件夹 前言 本文基于 Ub…...
windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】
注意版本依赖【本实验版本如下】 Hadoop 3.1.1 spark 2.3.2 scala 2.11 1.依赖环境 1.1 java 安装java并配置环境变量【如果未安装搜索其他教程】 环境验证如下: C:\Users\wangning>java -version java version "1.8.0_261" Java(TM) SE Runti…...
GitHub 仓库的 Archived 功能详解:中英双语
GitHub 仓库的 Archived 功能详解 一、什么是 GitHub 仓库的 “Archived” 功能? 在 GitHub 上,“Archived” 是一个专门用于标记仓库状态的功能。当仓库被归档后,它变为只读模式,所有的功能如提交代码、创建 issue 和 pull req…...
银行卡三要素验证接口:方便快捷地实现银行卡核验功能
银行卡三要素验证API:防止欺诈交易的有力武器 随着互联网的发展,电子支付方式也越来越普及。在支付过程中,银行卡是最常用的支付工具之一。然而,在一些支付场景中,需要对用户的银行卡信息进行验证,以确保支…...
Banana JS,一个严格子集 JavaScript 的解释器
项目地址:https://github.com/shajunxing/banana-js 特色 我的目标是剔除我在实践中总结的JavaScript语言的没用的和模棱两可的部分,只保留我喜欢和需要的,创建一个最小的语法解释器。只支持 JSON 兼容的数据类型和函数,函数是第…...
引领未来科技潮流:Web3 前沿发展趋势
随着技术不断发展,我们正站在一个全新的互联网时代的门槛上,Web3的出现正在重新定义互联网的构架和运作方式。Web3,作为互联网的下一代发展趋势,其核心思想是去中心化、开放与用户主权。与现有的Web2.0相比,Web3更加注…...
OpenCV:在图像中添加高斯噪声、胡椒噪声
目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV:图像处理中的低通滤波-CSDN博客 OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV:图像滤波、卷积与…...
在深度Linux (Deepin) 20中安装Nvidia驱动
文章创作不易,麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU,就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...
PC端实现PDF预览(支持后端返回文件流 || 返回文件URL)
一、使用插件 插件名称:vue-office/pdf 版本:2.0.2 安装插件:npm i vue-office/pdf^2.0.2 1、“vue-office/pdf”: “^2.0.2”, 2、 npm i vue-office/pdf^2.0.2 二、代码实现 // 引入组件 (在需要使用的页面中直接引入&#x…...
【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...
OpenAI的真正对手?DeepSeek-R1如何用强化学习重构LLM能力边界——DeepSeek-R1论文精读
2025年1月20日,DeepSeek-R1 发布,并同步开源模型权重。截至目前,DeepSeek 发布的 iOS 应用甚至超越了 ChatGPT 的官方应用,直接登顶 AppStore。 DeepSeek-R1 一经发布,各种资讯已经铺天盖地,那就让我们一起…...
es数据同步
Logstash 是 Elastic 技术栈中的一个技术,它是一个数据采集引擎,可以从数据库采集数据到 ES 中。可以通过设置 自增 ID 主键 或 更新时间 来控制数据的自动同步: 自增 ID 主键:Logstatsh 会有定时任务,如果发现有主键…...
【JavaScript笔记】01- 原型及原型链(面试高频内容)
前言 JavaScript作为前端入门三件套之一,也是前端求职的必会知识,重要性不言而喻。 这个系列分享个人学习JavaScript的记录,和大家一起学习讨论。 下面介绍关于原型&原型链的相关重要知识点。 1、构造函数创建对象 function Student(…...
【Python】第五弹---深入理解函数:从基础到进阶的全面解析
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、函数 1.1、函数是什么 1.2、语法格式 1.3、函数参数 1.4、函数返回值 1.5、变量作用域 1.6、函数…...
动态规划DP 数字三角形模型(模型分析+例题分析+C++代码实现)(数字三角形、摘花生、最低通行费用、方格取数、传纸条)
总体概览 数字三角形 原题链接 AcWing 898.数字三角形 题目描述 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路…...
2025 最新flutter面试总结
目录 1.Dart是值传递还是引用传递? 2.Flutter 是单引擎还是双引擎 3. StatelessWidget 和 StatefulWidget 在 Flutter 中有什么区别? 4.简述Dart语音特性 5. Navigator 是什么?在 Flutter 中 Routes 是什么? 6、Dart 是不是…...
Java后端之AOP
AOP:面向切面编程,本质是面向特定方法编程 引入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>示例:记录…...
JS中对数组的操作哪些会改变原数组哪些不会?今天你一定要记下!
JavaScript 数组方法:变更原数组与不变更原数组的区别 在 JavaScript 中,数组是非常常见且重要的数据结构。作为开发者,我们常常需要使用数组方法来处理数组数据。但是,数组的不同方法会以不同的方式影响原数组,它们可…...
ubuntu x64下交叉编译ffmpeg到目标架构为aarch架构的系统
参考链接 https://blog.csdn.net/qq_46396470/article/details/137794498...
Java进阶(二):Java设计模式
目录 设计模式 一.建模语言 二.类之间的关系 1.依赖关系 2.关联关系 3.聚合关系 4.组合关系 5.继承关系 6.实现关系 三.面向对象设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置 接口隔离原则 迪米特原则 组合/聚合(关联关系)复用原则 四.23种设计模式…...
python学opencv|读取图像(四十二)使用cv2.add()函数实现多图像叠加
【1】引言 前序学习过程中,掌握了灰度图像和彩色图像的掩模操作: python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 python学opencv|读取图像(四十)掩模:三…...
DIY QMK量子键盘
最近放假了,趁这个空余在做一个分支项目,一款机械键盘,量子键盘取自固件名称QMK(Quantum Mechanical Keyboard)。 键盘作为计算机或其他电子设备的重要输入设备之一,通过将按键的物理动作转换为数字信号&am…...
【公式】卢布贬值风险:义乌到俄罗斯贸易的汇率陷阱
卢布贬值风险:义乌到俄罗斯贸易的汇率陷阱 具体实例与推演 假设一位中国义乌的商人,计划出口一批价值100万人民币的商品到俄罗斯。最初的汇率是1人民币兑换100卢布。 初始状态: 商品价值:100万人民币初始汇率:1人民币…...
1月27(信息差)
🌍喜大普奔,适用于 VS Code 的 GitHub Copilot 全新免费版本正式推出,GitHub 全球开发者突破1.5亿 🎄Kimi深夜炸场:满血版多模态o1级推理模型!OpenAI外全球首次!Jim Fan:同天两款国…...
Linux常见问题解决方法--1
常见安全工具、设备 工具 端口及漏洞扫描:Namp、Masscan 抓包:Wireshark,Burpsuite、Fiddler、HttpCanary Web自动化安全扫描:Nessus、Awvs、Appscan、Xray 信息收集:Oneforall、hole 漏洞利用:MSF、…...
Python 数据清洗与处理常用方法全解析
在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战。本文总结了多种数据清洗与处理方法:缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列;重复值处理通过删除或标记重复项解决数据冗余问题࿱…...
《企业应用架构模式》笔记
领域逻辑 表模块和数据集一起工作-> 先查询出一个记录集,再根据数据集生成一个(如合同)对象,然后调用合同对象的方法。 这看起来很想service查询出一个对象,但调用的是对象的方法,这看起来像是充血模型…...
顶刊JFR|ROLO-SLAM:首个针对不平坦路面的车载Lidar SLAM系统
摘要 基于激光雷达(LiDAR)的同步定位与地图构建(SLAM)被认为是在恶劣环境中提供定位指导的一种有效方法。然而,现成的基于激光雷达的SLAM方法在经过不平坦地形时,尤其是在垂直方向相关的部分,会…...
第05章 09 使用Lookup绘制地形数据高程着色图
在VTK(Visualization Toolkit)中,可以使用颜色查找表(Lookup Table,简称LUT)来根据高程数据对地形进行着色。以下是一个示例代码,展示了如何使用VTK和C来读取地形数据,并使用颜色查找…...
【深度学习入门_机器学习理论】K近邻法(KNN)
本部分主要为机器学习理论入门_K近邻法(KNN),书籍参考 “ 统计学习方法(第二版)”。 学习目标: 了解k近邻算法的基本概念、原理、应用;熟悉k近邻算法重要影响要素;熟悉kd树原理与优化应用。 开始本算法之…...
基于Django的Boss直聘IT岗位可视化分析系统的设计与实现
【Django】基于Django的Boss直聘IT岗位可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python作为主要开发语言,利用Django这一高效、安全的W…...
编程语言中的常见Bug及解决方案
在编程过程中,不同语言有其独特的特性和挑战,这也导致了各种常见Bug的出现。本文将总结几种主流编程语言中的常见Bug,包括JavaScript、Python、C/C、Java和Go,并提供相应的解决方案和案例。 一、JavaScript中小数相加精度不准确的…...
DeepSeek API 的获取与对话示例
代码文件下载:Code 在线链接:Kaggle | Colab 文章目录 注册并获取API环境依赖设置 API单轮对话多轮对话流式输出更换模型 注册并获取API 访问 https://platform.deepseek.com/sign_in 进行注册并登录: 新用户注册后将赠送 10 块钱余额&#…...
数据库SQLite和SCADA DIAView应用教程
课程简介 此系列课程大纲主要包含七个课时。主要使用到的开发工具有:SQLite studio 和 SCADA DIAView。详细的可成内容大概如下: 1、SQLite 可视化管理工具SQLite Studio :打开数据库和查询数据;查看视频 2、创建6个变量&#x…...
Elasticsearch+kibana安装(简单易上手)
下载ES( Download Elasticsearch | Elastic ) 将ES安装包解压缩 解压后目录如下: 修改ES服务端口(可以不修改) 启动ES 记住这些内容 验证ES是否启动成功 下载kibana( Download Kibana Free | Get Started Now | Elastic ) 解压后的kibana目…...
(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)
一、平滑发布与灰度发布 **什么叫平滑:**在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问; **什么叫灰度:**发布后让部分用户使用新版本,其它用户使用旧版本&am…...
Android源码阅读笔记(二)—— 启动模式
Android源码阅读笔记(二)—— 启动模式初章 1、为什么学习启动模式 Activity的启动模式其实是一个在面试中经常会被关注的问题,那么它的重要性体现在哪里? A:在多数的开发场景中,我们似乎也没有怎么关注过…...
AndroidCompose Navigation导航精通2-过渡动画与路由切换
目录 前言路由切换NavControllerBackStackEntry过渡动画过渡原理缩放动画渐隐动画滑动动画动画过渡实战前言 在当今的移动应用开发中,导航是用户与应用交互的核心环节。随着 Android Compose 的兴起,它为开发者提供了一种全新的、声明式的方式来构建用户界面,同时也带来了更…...
PCL ——LevenbergMarquardt非线性最小二乘法拟合圆柱(C++详细过程版)
目录 一、算法概述1、圆柱方程2、LM算法流程二、代码实现三、结果展示一、算法概述 目前求解非线性最小二乘问题常用算法有高斯-牛顿方法(Gauss-Newton algorithm,GN 算法)、列文伯格-马夸尔特方法(Levenberg-Marquardt algorithm,LM 算法)。本文采用 LM 算法进行圆柱拟合。 …...