【QT】 常用控件【输入类】

🌈 个人主页:Zfox_
🔥 系列专栏:Qt

目录
- 一:🔥 输入类控件
- 🦋 Line Edit -- 单行输入框
- 🎀 录入个人信息
- 🎀 正则表达式验证输入框数据
- 🎀 验证两次输入密码一致
- 🎀 切换显示密码
- 🦋 Text Edit -- 多行输入框
- 🎀 获取多行输入框的内容
- 🎀 验证输入框的各种信号
- 🦋 Combo Box -- 下拉框
- 🎀 下拉框模拟点餐
- 🎀 从文件中加载下拉框的选项
- 🦋 Spin Box -- 微调框
- 🎀 调整麦当劳购物车中的份数
- 🦋 Date Edit & Time Edit
- 🎀 日期计算器
- 🦋 Dial -- 按钮
- 🎀 调整窗口透明度
- 🦋 Slider -- 滑动条
- 🎀 调整窗口大小
- 🎀 通过自定义快捷键调整滑动条位置
- 二:🔥 共勉
一:🔥 输入类控件
🦋 Line Edit – 单行输入框
🍝 QLineEdit
用来表示单行输入框,可以输入一段文本,但是不能换行。
核心属性 | 说明 |
---|---|
text | 输入框中的文本。 |
inputMask | 输入内容格式约束,限制用户输入的格式。 |
maxLength | 最大长度,定义输入框允许的最大字符数。 |
frame | 是否添加边框,默认为 true 显示边框。 |
echoMode | 显示方式: QLineEdit::Normal :显示输入文本QLineEdit::Password :隐藏输入字符 QLineEdit::NoEcho :不显示任何输入字符 |
cursorPosition | 光标所在位置,表示当前光标的索引。 |
alignment | 文字对齐方式,设置水平和垂直方向的对齐。 如:Qt::AlignLeft 、Qt::AlignCenter 等 |
dragEnabled | 是否允许拖拽,默认为 false 不允许。 |
readOnly | 是否是只读的(不允许修改),默认为 false 可编辑。 |
placeHolderText | 当输入框内容为空时显示的提示信息。 |
clearButtonEnabled | 是否会自动显示出“清除按钮”,点击可清空文本,默认为 false 不显示。 |
核心信号 | 说明 |
---|---|
cursorPositionChanged(int old, int new) | 当鼠标移动时发出此信号,old 为先前的位置,new 为新位置。 |
editingFinished() | 当按返回或者回车键时,或者行编辑失去焦点时,发出此信号。 |
returnPressed() | 当返回或回车键按下时发出此信号。如果设置了验证器,则必须验证通过才能触发。 |
selectionChanged() | 当选中的文本改变时,发出此信号。 |
textChanged(const QString &text) | 当 QLineEdit 中的文本改变时,发出此信号,text 是新的文本。代码对文本的修改也能触发这个信号。 |
textEdited(const QString &text) | 当 QLineEdit 中的文本被用户编辑改变时,发出此信号,text 是新的文本。代码对文本的修改不会触发这个信号 |
🎀 录入个人信息
(1)在界面上创建三个输入框和两个单选按钮,一个普通按钮
-
三个输入框的 objectName 为
lineEdit_name
、lineEdit_password
、lineEdit_phone
-
两个单选按钮的 objectName 为
radioButton_male
、radioButton_female
-
按钮的 objectName 为
pushButton
(2)编写 widget.cpp,在构造函数中编写初始化代码,并且给按钮添加 slot 函数
(3)执行程序,可以看到,随着用户输入内容之后,点击 “提交” 按钮 就能 打印到输入的信息:
- 上面的
inputMask
只能进行简单的输入格式校验。 - 实际开发中,基于 正则表达式 的方式是更核心的方法。
🎀 正则表达式验证输入框数据
此处要求在输入框中输入一个合法的电话号码(1 开头,11 位,全都是数字)。如果验证不通过,则确定按钮无法点击。
关于正则表达式
-
正则表达式是一种在计算机中常用的,使用特殊字符描述一个字符串的特征的机制,在进行字符串匹配时非常有用。
-
正则表达式的语法还比较复杂,一般都是随用随查,不需要背下来。
可参考:
正则表达式文档
正则表达式在线工具
(1)在界面上创建输入框和一个按钮
此处的规则:输入框要检查输入的内容是否为合法的手机号码。
- 如果是,则按钮设为可用状态。
- 如果不是,则按钮设为禁用状态。
(2)编写 widget.cpp,把按钮 初始 enabled 设为 false,给输入框添加验证器
-
使用
QRegExp
创建一个正则表达式对象,"^1\\d{10}$"
-
表示" 表示以 xxx 开头,后面跟着的 1 表示以 1 开头,\d 表示数字,为了在 C++ 字符串中使用,需要写作 \\d,{10} 表示前面的内容重复出现 10 次,\d 数字要重复出现 10 次,$ 表示结尾
-
使用
QRegExpValidator
创建一个验证器对象,Qt 中内置了四个主要的验证器对象。
QRegularExpressionValidator
在匹配性能上做出了一定优化。但是从使用角度讲,和 QRegExpValidator
差别不大,我们使用 QRegExpValidator
即可。
并且给 lineEdit
添加 textEdited
信号的 slot 函数
on_lineEdit_textEdited
的参数是当前输入框的内容- 通过
lineEdit->validator()
获取到内置的验证器- 通过 validate 方法验证文本是否符合要求
- 第一个参数填写的是要验证的字符串 。由于参数要求是
QString&
而不是const QString&
,需要把这个变量复制一下。- 第二个参数是⼀个 int&,是输出型参数。当验证的字符串不匹配时,返回这个字符串的长度(没有什么实质作用)。
- 返回值是⼀个枚举。
QValidator::Acceptable
表示 验证通过,QValidator::Invalid
表示验证不通过。
执行程序,观察效果,可以看到此时尝试输入字母是无法输入的,并且只有当输入的内容符合要求,确定按钮才能被使用
🎀 验证两次输入密码一致
(1)在界面上创建两个输入框 和 三个 label
(2)编写代码,设置两个输入框的 echoMode 为 Password,并且给两个输入框设置 textEdited slot 函数
- 由于两个槽函数内容一致,我们可以选择 封装一个函数,然后在槽函数内直接调用即可。
执行程序,可以看到当两个输入框内的密码相同时,就会提示密码相同:
🎀 切换显示密码
(1)创建一个输入框和一个复选按钮
(2)修改 widget.cpp,设置输入框的 echoMode 为 Password,并且给 checkBox 添加 slot 函数,代码和结果运行如下:
🦋 Text Edit – 多行输入框
QTextEdit
表示多行输入框,也是一个富文本 &markdown 编辑器- 并且能在内容超出编辑框范围时自动提供滚动条
核心属性 | 说明 |
---|---|
markdown | 输入框内持有的内容,支持 Markdown 格式。能够自动对 Markdown 文本进行渲染成 HTML。 |
html | 输入框内持有的内容,可以支持大部分 HTML 标签,包括 img 和 table 等。 |
placeHolderText | 输入框为空时提示的内容。 |
readOnly | 是否是只读的,默认为 false 可编辑。 |
undoRedoEnabled | 是否开启 undo/redo 功能,默认为 true 开启。按下 Ctrl+Z 触发 undo按下 Ctrl+Y 触发 redo |
autoFormatting | 开启自动格式化功能。 |
tabStopWidth | 按下缩进占多少空间,默认单位为像素。 |
overwriteMode | 是否开启覆盖写模式,默认为 false 不开启。 |
acceptRichText | 是否接收富文本内容,默认为 true 接收 |
verticalScrollBarPolicy | 垂直方向滚动条的出现策略:Qt::ScrollBarAsNeeded :根据内容自动决定是否需要滚动条(默认值)Qt::ScrollBarAlwaysOff :总是关闭滚动条Qt::ScrollBarAlwaysOn :总是显示滚动条 |
horizontalScrollBarPolicy | 水平方向滚动条的出现策略:Qt::ScrollBarAsNeeded :根据内容自动决定是否需要滚动条(默认值)Qt::ScrollBarAlwaysOff :总是关闭滚动条Qt::ScrollBarAlwaysOn :总是显示滚动条 |
核心信号 | 说明 |
---|---|
textChanged() | 文本内容改变时触发。 |
selectionChanged() | 选中范围改变时触发。 |
cursorPositionChanged() | 光标移动时触发。 |
undoAvailable(bool) | 当可以进行 undo 操作时触发,参数表示当前是否可以 undo。 |
redoAvailable(bool) | 当可以进行 redo 操作时触发,参数表示当前是否可以 redo。 |
copyAvailable(bool) | 文本被选中或取消选中时触发,参数表示当前是否有可复制的文本。 |
🎀 获取多行输入框的内容
(1)创建一个多行输入框和一个 label
(2)给多行输入框添加 slot 函数,处理 textChanged
信号
- 通过 toPlainText 方法获取到内部的文本
- 类似的,QTextEdit 还提供了 toMarkdown 和 toHtml,根据需要我们调整不同的获取方式
- 值得一提的是:这里的获取内容,是会先清空标签内原有内容,再进行写入的
🎀 验证输入框的各种信号
(1)创建多行输入框
(2)给输入框添加以下几个 slot 函数
QTextEdit 中包含了一个 QTextCursor 对象,通过这个对象可以获取到当前光标位置和选中的内容
void Widget::on_textEdit_textChanged()
{qDebug() << "textChanged: " << ui->textEdit->toPlainText();
}void Widget::on_textEdit_selectionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "selectChanged: " << cursor.selectedText();
}void Widget::on_textEdit_cursorPositionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "cursorPositionChanged: " << cursor.position();
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "undoAvailable:" << b;
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "redoAvailable:" << b;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "copyAvailable:" << b;
}
(3)执行程序
- 编写内容时,
textChanged
和cursorPositionChanged
会触发 - 选中一段文本时,
cursorPositionChanged
、selectChanged
、copyAvailable
会触发 - 按下 Ctrl + Z 时,
textChanged
、undoAvailable
、redoAvailable
、cursorPositionChanged
会触发 - 按下 Ctrl + Y,
textChanged
、undoAvailable
、redoAvailable
、cursorPositionChanged
会触发
🦋 Combo Box – 下拉框
核心属性名称 | 说明 |
---|---|
currentText | 当前选中的文本 |
currentIndex | 当前选中的条目下标,从0开始计算。如果没有条目被选中,值为-1 |
editable | 是否允许修改;设为true时,QComboBox的行为接近QLineEdit,并可设置validator |
iconSize | 下拉框图标(小三角)的大小 |
maxCount | 最多允许有多少个条目 |
核心方法名称 | 说明 |
---|---|
addItem(const QString&) | 添加一个条目 |
currentIndex() | 获取当前条目的下标,从0开始计算。如果没有条目被选中,值为-1 |
currentText() | 获取当前条目的文本内容 |
核心信号名称 | 说明 |
---|---|
activated(int) | 用户选择了选项时发出,相当于用户点开下拉框并且鼠标划过某个选项 |
activated(const QString &text) | 同上,但是传递的是文本参数 |
currentIndexChanged(int) | 当前选项改变时发出,用户已经明确选择了一个选项 |
currentIndexChanged(const QString &text) | 同上,但是传递的是文本参数 |
editTextChanged(const QString &text) | 当编辑框中的文本改变时发出(当editable为true时有效) |
🎀 下拉框模拟点餐
(1)在界面上创建两个下拉框和一个按钮
(2)编写 widget.cpp,初始化两个下拉框的内容,或者也可以选择直接在 ui 界面添加选项内容
(3)编写 widget.cpp,给按钮添加 slot 函数,执行程序,在点击确定按钮时,就能获取到当前下拉框中选中的内容:
🎀 从文件中加载下拉框的选项
很多时候下拉框的选项并非是固定的,而是通过读取文件 / 读取网络获取到的。
(1)在界面上创建一个下拉框
(2)在当前文件目录下创建文件 animal.txt
,编写选项,每个选项占一行
(3)修改 widget.cpp,从文件中读取选项,执行程序就可以看到文件内容已经被加载到下拉框中
- 使用 ifstream 打开文件
- 使用 getline 读取每一行
- 使用 QString::fromStdString 把 std::string 转成 QString
-
Qt 中也提供了
QFile
实现读写文件的功能,当然使用 C++ 标准库的std::fstream
也是完全可以的。 -
之所以存在两套,是因为 Qt 诞生较早(1991 年左右),此时 C++ 还没有完成 “标准化” 的工作,C++ 标准库这样的概念自然也没有诞生。
-
因此 Qt 就自己打造了一套库,实现了字符串、容器、文件操作、多线程、网络操作、定时器、正则表达式等内容。(由于 C++ 标准委员会的不作为,至今仍然有些 Qt 提供的功能,是标准库不具备的)
🦋 Spin Box – 微调框
使用 QSpinBox
或者 QDoubleSpinBox
表示 “微调框”,它是****带有按钮的输入框****,可以用来输入整数 / 浮点数,通过点击按钮来修改数值大小。
- 由于 SpinBox 和 QDoubleSpinBox 用法基本相同,就只介绍 SpinBox 的使用了
Spin 英文原意为 “旋转”,此处引申成 “微调”
- 事实上很多术语在翻译的时候,不一定非要按照原始的翻译来表示,更追求的是 “信达雅”。
- 举例:地铁上的 “Priority Seat” 会翻译成 “爱心专座”,而不是 “优先座位”。
属性名称 | 说明 |
---|---|
value | 存储的数值 |
singleStep | 每次调整的"步长". 按下一次按钮数据变化多少 |
displayIntegerBase | 数字的进制。例如设为10,则是按照10进制表示;设为2则为2进制表示 |
minimum | 最小值 |
maximum | 最大值 |
suffix | 后缀 |
prefix | 前缀 |
wrapping | 是否允许换行 |
frame | 是否带边框 |
alignment | 文字对齐方式 |
readOnly | 是否允许修改 |
buttonSymbols | 按钮上的图标:上下箭头形式、加减号形式、没有按钮 |
accelerated | 按下按钮时是否为快速调整模式 |
correctionMode | 输入有误时如何修正: - CorrectToPreviousValue: 恢复为上一个有效值 - CorrectToNearestValue: 恢复为最接近的有效值 |
keyboardTracking | 是否开启键盘跟踪。 设为true, 每次在输入框输入一个数字, 都会触发一次valueChanged() 和 textChanged() 信号。 设为false, 只有在最终按下enter 或者输入框失去焦点, 才会触发 valueChanged() 和 textChanged() 信号 |
🎀 调整麦当劳购物车中的份数
(1)在界面上创建下列内容
- 两个下拉框:objectName 为 comboBox 到 comboBox_2
- 两个微调框:objectName 为 spinBox 到 spinBox_2
- 一个按钮:objectName 为 pushButton
(2)编写代码,修改 widget.cpp,给下拉框设置初始值,给按钮添加 slot 函数,执行程序,可以看到当用户选择不同的内容时,点击按钮就能获取到对应的结果
- 注意:上面即使我们给了个 7.5,但是最多也就到 6,说明这里无法输入一些超出范围的非法值
🦋 Date Edit & Time Edit
使用 QDateEdit 作为日期的微调框:
使用 QTimeEdit 作为时间的微调框:
使用 QDateTimeEdit 作为 时间日期的微调框:
属性名称 | 说明 |
---|---|
dateTime | 时间日期的值。格式形如:2000/1/1 0:00:00 |
date | 单纯日期的值。格式形如:2001/1/1 |
time | 单纯时间的值。格式形如:0:00:00 |
displayFormat | 时间日期显示格式。常用的格式化符号: - y : 年份- M : 月份- d : 日期- H : 小时(24小时制)- m : 分钟- s : 秒注意,不同语言或库的设定规则可能存在差异,具体使用时应查阅文档 |
minimumDateTime | 设置可选择的最小时间日期 |
maximumDateTime | 设置可选择的最大时间日期 |
timeSpec | 指定时间的时区或偏移: - Qt::LocalTime : 显示本地时间- Qt::UTC : 显示协调世界时(UTC)- Qt::OffsetFromUTC : 显示相对于UTC的偏移量****(时差)**** |
关于本地时间(LocalTime)和协调世界时(UTC)
UTC 时间是一个基于原子钟的标准时间,不受地球的自转周期影响,和格林威治时间(GMT)是非常接近的,科学家会通过精密的设备来测量并维护。
- 我们的计算机内部使用的时间就是基于 UTC 时间
- 本地时间则是基于不同的时区,对 UTC 时间做出了一些调整
- 比如咱们使用的北京时间,位于 “东八区”,就需要在 UTC 时间基础上 + 8 个小时的时差
信号名称 | 说明 |
---|---|
dateChanged(QDate) | 当日期改变时触发。参数 QDate 包含新的日期值 |
timeChanged(QTime) | 当时间改变时触发。参数 QTime 包含新的时间值 |
dateTimeChanged(QDateTime) | 当日期或时间任意一个改变时触发。参数 QDateTime 包含新的日期时间值 |
🎀 日期计算器
(1)在界面上创建两个 QDateTimeEdit 和一个按钮,一个 label,QDateTimeEdit 的 objectName
为 dateTimeEdit_old
和 dateTimeEdit_new
!
(2)编写计算按钮的 slot 函数,然后再执行程序
-
使用 daysTo 函数可以计算两个日期的天数
-
使用 secsTo 函数可以计算两个时间的秒数
-
通过(秒数 / 3600)换算成小时数,再余上 24 得到零几个小时
-
使用 QString::number 把整数转成 QString 进行拼接
🦋 Dial – 按钮
使用 QDial 表示一个旋钮。有些程序通过****鼠标拖动旋钮旋转****,即可完成一些相关的设置。
属性名称 | 说明 |
---|---|
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方方向键的时候改变的步长 |
pageStep | 按下 PageUp/PageDown 的时候改变的步长 |
sliderPosition | 界面上旋钮显示的初始位置 |
racking | 外观是否会跟踪数值变化,默认值为 true,一般不需要修改 |
wrapping | 是否允许循环调整。即数值如果超过最大值,是否允许回到最小值(调整过程能否"套圈") |
otchesVisible | 是否显示刻度线 |
notchTarget | 刻度线之间的相对位置。数字越大,刻度线越稀疏 |
信号名称 | 说明 |
---|---|
valueChanged(int) | 数值改变时触发 |
rangeChanged(int, int) | 范围变化时触发。参数包含新的最小值和最大值 |
🎀 调整窗口透明度
1)在界面上创建一个旋钮 和 一个 label
2)对旋钮进行初始化,然后编写 widget.cpp,设置旋钮的 valueChanged slot 函数,运行程序
- 观察效果,可以看到随着拖动旋钮旋转,不透明度发生明显变化
🦋 Slider – 滑动条
- QSlider 和 QDial 都是继承自 QAbstractSlider,因此用法上基本相同。
属性名称 | 说明 |
---|---|
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方方向键的时候改变的步长 |
pageStep | 按下 PageUp/PageDown 的时候改变的步长 |
sliderPosition | 滑动条显示的初始位置 |
tracking | 外观是否会跟踪数值变化,默认值为 true,一般不需要修改 |
orientation | 滑动条的方向是水平还是垂直 |
invertedAppearance | 是否要翻转滑动条的方向 |
tickPosition | 刻度的位置。可选值包括无刻度、仅在上方或下方、两侧都显示等 |
tickInterval | 刻度的密集程度。定义相邻刻度之间的间隔 |
信号名称 | 说明 |
---|---|
valueChanged(int) | 数值改变时触发。参数 int 包含新的数值 |
rangeChanged(int, int) | 范围变化时触发。参数包含新的最小值和最大值 |
🎀 调整窗口大小
(1)在界面上创建两个滑动条,分别是水平和垂直滑动条
objectName 分别为 horizontalSlider(水平)
和 verticalSlider(垂直)
(2)编写代码初始化滑动条 和 滑动条的 valueChanged slot 函数
(4)执行程序
可以看到调整滑动条,窗口大小就会随之改变:
🎀 通过自定义快捷键调整滑动条位置
设置 - 减小 value,设置 = 增加 value
- 默认情况下滑动条可以通过方向键或者 pageUp / pageDown 调整大小。
(1)在界面上创建滑动条和 label
(2)修改 widget.cpp 构造函数,增加快捷键,创建 valueChanged 的 slot 函数
- 使用
QShortCut
类设置快捷键 - 快捷键触发时,会发出
QShortcut::activated
信号,我们连接到自己写的 slot 函数(下面等下会写的)
(3)编写自定义 slot 函数,并且执行程序,观察效果,可以看到此时按下 - 和 = 就可以调整 value 的值了:
- 核心属性:定义 初始设置 & 槽函数的 应答调用
- 核心信号:实现 触发转接(中间过程的)
二:🔥 共勉
😋 以上就是我对 【QT】 常用控件【输入类】
的理解, 觉得这篇博客对你有帮助的,可以点赞收藏关注支持一波~ 😉
相关文章:
【QT】 常用控件【输入类】
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 输入类控件 🦋 Line Edit -- 单行输入框🎀 录入个人信息🎀 正则表达式验证输入框数据🎀 验证两次输入密码一致…...
【Python】读取xyz坐标文件输出csv文件
Python读取xyz坐标文件输出csv文件 import sys import numpy as np import pandas as pd from tqdm import tqdm import cv2 import argparsedef read_xyz(file_path):with open(file_path, "r") as f: # 打开文件data f.readlines() # 读取文件datas []for …...
深度解析Redis过期字段清理机制:从源码到集群化实践 (一)
深度解析Redis过期字段清理机制:从源码到集群化实践 一、问题本质与架构设计 1.1 过期数据管理的核心挑战 Redis连接池时序图技术方案 设计规范: #mermaid-svg-Yr9fBwszePgHNnEQ {font-family:"trebuchet ms",verdana,arial,sans-se…...
MapReduce实验:分析和编写WordCount程序(对文本进行查重)
实验环境:已经部署好的Hadoop环境 Hadoop安装、配置与管理_centos hadoop安装-CSDN博客 实验目的:对输入文件统计单词频率 实验过程: 1、准备文件 test.txt文件,它是你需要准备的原始数据文件,存放在你的 Linux 系…...
【中大厂面试题】腾讯云 java 后端 最新面试题
腾讯云(一面) 1. spring 和 springboot的区别是什么? 配置方式的区别:Spring 应用的配置较为繁琐,通常需要编写大量的 XML 配置文件或者使用 Java 注解进行配置。例如,配置数据源、事务管理器等都需要手动…...
Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案
Hi,大家好,我是灰小猿! 在一些功能的开发中,我们一般会有一些场景需要将得到的数据先暂时的存储起来,以便后面的接口或业务使用,这种场景我们一般常用的场景就是将数据暂时存储在缓存中,之后再…...
【Vue】v-if和v-show的区别
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–核心区别三–使用场景四–性能对比五–总结 二. 核心区别 之前将css的显示隐藏的方式的时候,就已经提到过v-show和v-if了。忘记了的可以再回头去复习复习。 (2.1)…...
南瓜颜色预测:逻辑回归在农业分类问题中的实战应用
南瓜颜色预测:逻辑回归在农业分类问题中的实战应用 摘要 本案例通过预测南瓜颜色的分类问题,全面展示了逻辑回归在农业领域的实战应用。从数据预处理到模型评估,详细介绍了Seaborn可视化、模型构建、性能优化和结果解释等关键环节。案例不仅…...
【物联网-RS-485】
物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点■ ModBus■ ModBus-ASCII■ ModBus-RTU ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式:半双工通信、(逻辑1:2V ~ 6V 逻辑0&…...
TDengine 语言连接器(Node.js)
简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...
Git分布式版本控制工具
一、工作流程 二、常用指令 1、配置git 配置环境变量 cmd打开命令行,输入git查看是否配置成功。 设置用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 查看用户名和邮箱 git config --glob…...
The first day of vue
关于小白直接接触vue3的第1天 首先我们需要一个脚手架node.js (这个可以从官网下载,免费的,安装也比较简单,后续我也会出一个相关的安装教程,方便大家和我一起讨论,互相学习) (不知道有没有人对…...
C语言超详细指针知识(三)
在经过前面两篇指针知识博客学习之后,我相信你已经对指针有了一定的理解,今天将更新C语言指针最后一篇,一起来学习吧。 1.字符指针变量 在指针类型的学习中,我们知道有一种指针类型为字符指针char*,之前我们是这样使用…...
无人机气动-结构耦合技术要点与难点
一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合:气动力(如升力、阻力、力矩)导致结构变形,而变形改变气动外形,进一步影响气流分布,形成闭环反馈。 建模方法: 高精度C…...
打造现代数据基础架构:MinIO对象存储完全指南
目录 打造现代数据基础架构:MinIO对象存储完全指南1. MinIO介绍1.1 什么是对象存储?1.2 MinIO核心特点1.3 MinIO使用场景 2. MinIO部署方案对比2.1 单节点单驱动器(SNSD/Standalone)2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)2.3 多节点多驱动器(…...
SpringBoot条件注解全解析:核心作用与使用场景详解
目录 引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、ConditionalOnClass和ConditionalOnMissingClass2、ConditionalOnBean和ConditionalOnMissingBean3、ConditionalOnProperty4、ConditionalOnWebApplication和ConditionalOnNotWebApplication5、ConditionalO…...
智慧酒店企业站官网-前端静态网站模板【前端练习项目】
最近又写了一个静态网站,智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块:首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目,小伙伴们…...
#2 物联网组成要素
从下至上,则包括了5个要素,包括 设备 / 传感器 / 网络 / 物联网服务 / 数据分析 这五个要素。为了便于理解,我们用思维导图展示 物联网构成架构 设备 能够感测和反馈并连到网络进行物联网服务的装置 传感器 传感器和网关的融合实现了物…...
UE5 物理模拟 与 触发检测
文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…...
C++23 新特性静态operator[]、operator()与Lambda
文章目录 静态操作符 operator[] 和 operator()示例:静态 operator[]示例:静态 operator() 静态 Lambda 表达式(P1169R4)示例:静态 Lambda 表达式 编译器支持和总结深入静态操作符 operator[] 和 operator()性能优化代…...
C# 13新特性 - .NET 9
转载: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…...
MyBatis SQL会话管理详解
目录 一、SQL会话的基本概念(一)创建SQL会话 二、SQL会话的生命周期(一)打开会话(二)执行SQL操作(三)提交事务(四)回滚事务(五)关闭会…...
Uniapp: 下拉选择框 ba-tree-picker
目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…...
【高性能缓存Redis_中间件】三、redis 精通:性能优化与生产实践
一、引言 在前两篇 Redis 消息队列的文章中,我们掌握了基础使用和高级特性。本文作为系列终篇,将聚焦生产环境的性能优化与全流程实践,请各位跟随小编的步伐一起构建高可靠、高性能的消息处理系统(文章中的演示均为Centos7的背…...
自然语言处理Hugging Face Transformers
Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库,专注于 最先进的自然语言处理(NLP)模型,如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API,广泛应用于文本分类、机器翻…...
uniapp自定义tabbar,根据角色动态显示不同tabbar,无闪动问题
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 这个需求在开发中还是很常见的,搜索了网络其他教程,…...
狂神SQL学习笔记一:初识MySQL、关系型数据库和非关系型数据库
菜鸟教程学习一半了,但是已经疲倦了,所以换一个课程学习,来提升学习质量,可能会有很多已经学习到的地方,就当是复习巩固了。 按照SQL学习课程来划分,分为45集,所以可能也会写45篇文章ÿ…...
面向MoE和推理模型时代:阿里云大数据AI产品升级发布
阿里云 2025 AI 势能大会上,阿里云智能集团副总裁、阿里云智能计算平台事业部负责人汪军华带来主题演讲《范式演进:MoE&推理模型时代的挑战与应对》,并发布大数据 AI 平台一系列重磅产品能力升级。 汪军华认为,从 Generative …...
网络安全·第三天·ICMP协议安全分析
一、ICMP功能介绍 ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保…...
Hadoop大数据平台部署(Hadoop3.2.4+Hive4.0.1)
这里写自定义目录标题 1、前置要求与规划2、基础环境配置3、Hadoop 3.2.4 集群部署4、MariaDB 10.6.x 安装(仅 master 节点)5、Hive 4.0.1 部署(仅 master 节点)6、Hive 离线数据预处理7、Sqoop导出预处理结果到MySQL 1、前置要求…...
JMeter使用
1.简介 1.1 打开方式 ①点击bat,打开 ②添加JMeter系统环境变量,输⼊命令jmeter即可启动JMeter⼯具 1.2 配置 简体中文 放大字体 1.3 使用 ①添加线程组 ②创建http请求 2. 组件 2.1 线程组 控制JMeter将⽤于执⾏测试的线程数,也可以把⼀个线程理解为⼀个测…...
API:科技赋能,引领智能文字识别、身份认证与发票查验真伪变革
在数字化进程不断加速的今天,各行业对高效、精准的数据处理和身份验证方式如饥似渴。 文字识别:精准捕捉,高效便捷 文字识别产品系列宛如一把把精准的信息采集利器,其中包含证件识别接口、车牌识别接口、文档识别接口、发票识别接…...
Docker 安装 Flink 实现数据实时统计 - 华为云
概述 案例介绍 Apache Flink 是一个开源的流处理框架,具有高吞吐、低延迟、可容错等特点,可同时支持批处理和流处理,为数据处理提供了强大而灵活的解决方案,Flink 在 Docker 中的应用场景主要是为了简化集群的部署和管理&#x…...
LeetCode算法题(Go语言实现)_46
题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 querie…...
AJAX与Axios基础
目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …...
CodeReview工具集合
codereview 工具集合 在现代软件开发中,代码审查(Code Review) 已成为保障代码质量和团队协作效率的关键流程。一个合适的 Code Review 工具,不仅能帮助团队发现潜在问题,还能促进知识共享与规范统一。 本文整理了一些…...
LeetCode算法题(Go语言实现)_45
题目 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况…...
C++23 新特性:[[assume(expression)]] 属性
文章目录 语法与基本用法作用与优化原理使用注意事项未满足假设时的行为使用场景 示例代码总结 C23 引入了一个新的属性 [[assume(expression)]],它为程序员提供了一种向编译器传递额外信息的机制,从而让编译器能够生成更高效的代码。 语法与基本用法 …...
AI IDE 提示词
好的,这就将之前的分析内容整理成一篇适合发布在 CSDN 上的博客文章。 告别代码生成混乱:AI IDE 提示词模式权威指南 作者: (你的名字/昵称) 日期: 2025年4月14日 前言 随着人工智能技术的飞速发展,AI 助手(如 GitHub Copilot…...
Framework Binder架构分解
整个 Binder 架构所涉及的总共有以下 5 个目录: 1. /framework/base/core/java/(Java) 2. /framework/base/core/jni/ (JNI) 3,/framework/native/libs/binder (Native) 4,/framework/native/cmds/servicemanager/ (Native) 5,…...
三层交换机SVI功能(交换机虚拟接口)实现各个实训室电脑网络可互通,原本是独立局域网
三层交换机 SVI功能(交换机虚拟接口) 实现VLAN路由 需求 :各实训室使用独立局域网,即每个实训有自己的IP网段, 每个实训室只有内部互相访问。 需求:为了加强各实训室学生的交流,学校要求我们…...
Spark-SQL核心编程:DataFrame、DataSet与RDD深度解析
在大数据处理领域,Spark-SQL是极为重要的工具。今天就来深入探讨Spark-SQL中DataFrame、DataSet和RDD这三个关键数据结构。 Spark-SQL的前身是Shark,它摆脱了对Hive的过度依赖,在数据兼容、性能优化和组件扩展上有显著提升。DataFrame是基于R…...
腾讯云COS直传,官方后端demo,GO语言转JAVA
腾讯云COS直传,官方后端demo,GO写的,我们台是JAVA所以转一下,已跑通。废话不多说,直接上代码: Controller类如下: import com.ruoyi.web.core.config.CosConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.Ht…...
c语言坦克对战(前言)
实现C语言中的“坦克大战”游戏逻辑,可以按照以下步骤进行: 游戏初始化 定义游戏窗口:设置游戏窗口的大小和标题。加载资源:加载坦克、子弹、敌人等图像资源。初始化游戏状态:设置初始分数、生命值、坦克位置等。 游…...
空间信息可视化——WebGIS前端实例(一)
技术栈:原生HTML 源代码:CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…...
JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则
楔子:代码鸿蒙劫 "警告!警告!昆仑山服务器集群出现量子纠缠现象!"凌霄殿监控中心警报响彻云霄。全息投影中,Java线程在四维时空中编织出克莱因瓶拓扑结构,GC日志里闪烁着霍金辐射般的奇点事件。本…...
思维与算法共舞:AIGC语言模型的艺术与科学
云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 引言:AIGC与文本生成概述 一、AIGC基础:语言模型的基本原理 1. 什么是语言模型? 2. 预训练与微调 二、AIGC的应用领域:文本生成的具体应用 …...
C++之 多继承
在学校里有老师和学生,他们都是人,我么应该创建一个名为 Person 的基类和两个名为 Teacher 和Student 的子类,后两者是从前者继承来的 有一部分学生还教课挣钱(助教),也就是同时存在着两个”是一个”关系&…...
AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型
以下是 AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型: 一、AI模型的主要分类 1. 按任务类型分类 分类定义特点代表模型应用场景推理模型专注于逻辑推理、问题解决、因果关系分析的模型…...
TypeScript 快速入门
TypeScript 快速入门 1. 初识 TypeScript 1.1 TS 是什么? 以 JavaScript 为基础构建的语言;一个 JavaScript 的超集;可以在任何支持 JavaScript 的平台执行;TypeScript 扩展了 JavaScript 并添加了类型;TS 不能被 J…...