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

010 Qt_输入类控件(LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider)

文章目录

  • 前言
  • 一、QLineEdit
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:用户登录界面
    • 5.示例二:验证两次输入的密码是否一致+显示密码
  • 二、TextEdit
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:获取多行输入框的内容
    • 5.示例二:验证输入框的各种信号
  • 三、ComboBox
    • 1.简介
    • 2.常见属性及说明
    • 3.核心方法 说明
    • 4.核心信号 说明
    • 5.示例一:ComboBox的基本使用
    • 6.示例二:从文件中读取数据填充下拉框中的条目
  • 四、SpinBox
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:QSpinBox的使用
  • 五、DateTimeEdit
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:计算日期差值
  • 六、Dial
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:使用旋钮调整窗口透明度
  • 七、Slider
    • 1.简介
    • 2.常见属性及说明
    • 3.重要信号及说明
    • 4.示例一:调整窗口大小
  • 小结

前言

本文将会向你介绍输入类控件:LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider

一、QLineEdit

1.简介

QLineEdit 用来表示单行输入框. 可以输入一段文本, 但是不能换行.
QLineEdit 具有许多功能,包括自动完成、输入限制、密码模式等。它还可以设置最大长度、光标样式、输入校验等。QLineEdit 可以被嵌入到其他 Qt 小部件中,如对话框、窗口等。
在这里插入图片描述

2.常见属性及说明

属性说明
text输⼊框中的⽂本
inputMask输⼊内容格式约束
maxLength最⼤⻓度
frame是否添加边框
echoMode显⽰⽅式: QLineEdit::Normal :这是默认值,⽂本框会显⽰输⼊的⽂本。 QLineEdit::Password :在这种模式下,输⼊的字符会被隐藏,通常⽤星号(*)或等号(=)代替。QLineEdit::NoEcho :在这种模式下,⽂本框不会显⽰任何输⼊的字符。
cursorPosition光标所在位置
alignment⽂字对⻬⽅式, 设置⽔平和垂直⽅向的对⻬.
dragEnabled是否允许拖拽
readOnly是否是只读的(不允许修改)
placeHolderText当输⼊框内容为空的时候, 显⽰什么样的提⽰信息
clearButtonEnabled是否会⾃动显⽰出 “清除按钮”

3.重要信号及说明

信号说明
void cursorPositionChanged(int old, int new)当⿏标移动时发出此信号,old为先前的位置,new为新位置。
void editingFinished()当按返回或者回⻋键时,或者⾏编辑失去焦点时,发出此信号。
void returnPressed()当返回或回⻋键按下时发出此信号.如果设置了验证器, 必须要验证通过, 才能触发.
void selectionChanged()当选中的⽂本改变时,发出此信号。
void textChanged(const QString &text)当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号.
void textEdited(const QString &text))当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号.

4.示例一:用户登录界面

①在界面上创建三个输入框和两个单选按钮, ⼀个普通按钮
在这里插入图片描述
② 编写widget.cpp文件,初始化输入框的内容,演示inputMask(格式约束)、echoMode(显示方式)、placeHolderText(提示信息)、clearButtonEnabled(清除按钮)等属性

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit_name->setPlaceholderText("请输入姓名");ui->lineEdit_name->setClearButtonEnabled(true); //显示清除按钮ui->lineEdit_password->setPlaceholderText("请输入密码");ui->lineEdit_password->setClearButtonEnabled(true);ui->lineEdit_password->setEchoMode(QLineEdit::Password); //显示方式为密码模式ui->lineEdit_phone->setPlaceholderText("请输入电话号码");ui->lineEdit_phone->setClearButtonEnabled(true);//约束格式:输入11位数,按照3-4-4形式ui->lineEdit_phone->setInputMask("000-0000-0000");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QString gender=ui->radioButton_male->isChecked() ? "男" : "女";qDebug()<<"姓名:"<<ui->lineEdit_name->text() << "密码:" << ui->lineEdit_password->text()<< "性别: " << gender<< "手机: " << ui->lineEdit_phone->text();
}

5.示例二:验证两次输入的密码是否一致+显示密码

①创建两个LineEdit输入框和⼀个CheckBox复选框以及一个label
在这里插入图片描述

②编写widget.cpp文件,给两个输入框lineEdit添加判断两个密码是否相同逻辑的槽函数,给复选框添加切换显示模式的槽函数——演示void textEdited(const QString &text))信号(当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对文本的修改不能触发这个信号)

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setEchoMode(QLineEdit::Password);ui->lineEdit_2->setEchoMode(QLineEdit::Password);ui->label->setText("密码为空");
}Widget::~Widget()
{delete ui;
}void Widget::on_checkBox_toggled(bool checked)
{if(checked){ui->lineEdit->setEchoMode(QLineEdit::Normal);ui->lineEdit_2->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit->setEchoMode(QLineEdit::Password);ui->lineEdit_2->setEchoMode(QLineEdit::Password);}}void Widget::on_lineEdit_textEdited(const QString &arg1)
{(void)arg1; //类型转换,消除编译器未使用到arg1参数的警告const QString& s1 = ui->lineEdit->text();const QString& s2 = ui->lineEdit_2->text();if (s1.isEmpty() && s2.isEmpty()){ui->label->setText("密码为空!");}else if (s1 == s2){ui->label->setText("两次输入的密码相同!");}else{ui->label->setText("两次输入的密码不同!");}
}void Widget::on_lineEdit_2_textEdited(const QString &arg1)
{(void)arg1;const QString& s1 = ui->lineEdit->text();const QString& s2 = ui->lineEdit_2->text();if (s1.isEmpty() && s2.isEmpty()){ui->label->setText("密码为空!");}else if (s1 == s2){ui->label->setText("两次输入的密码相同!");}else{ui->label->setText("两次输入的密码不同!");}
}

③运行程序,观察效果
在这里插入图片描述

二、TextEdit

1.简介

QTextEdit是Qt中的一个可编辑的文本框控件,可以用于显示和编辑多行文本。 它是基于QPlainTextEdit的一个子类,提供了更丰富的功能。

QTextEdit可以用于显示富文本,支持使用HTML或其他格式来设置文本的样式,包括字体、颜色、大小、对齐方式等。 它还可以显示图像和链接,并且可以响应用户的点击事件。

除了显示富文本,QTextEdit还支持一些基本的文本编辑操作,如复制、剪切、粘贴和撤销。它还提供了一些高级的编辑功能,如查找和替换、查看和修改文本的样式、插入列表和表格等

2.常见属性及说明

属性说明
markdown输⼊框内持有的内容. ⽀持 markdown 格式. 能够⾃动的对markdown ⽂本进⾏渲染成 html
html输⼊框内持有的内容. 可以⽀持⼤部分 html 标签. 包括 img 和 table 等.
placeHolderText输⼊框为空时提⽰的内容.
readOnly是否是只读的
undoRedoEnable是否开启 undo / redo 功能. 按下 ctrl + z 触发 undo 按下 ctrl + y 触发 redo
autoFormating开启⾃动格式化.
tabstopWidth按下缩进占多少空间
overwriteMode是否开启覆盖写模式
acceptRichText是否接收富⽂本内容
verticalScrollBarPolicy垂直⽅向滚动条的出现策略 Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。 Qt::ScrollBarAlwaysOff : 总是关闭滚动条。 Qt::ScrollBarAlwaysOn : 总是显⽰滚动。horizontalScrollBarPolicy ⽔平⽅向滚动条的出现策略Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。Qt::ScrollBarAlwaysOff : 总是关闭滚动条。Qt::ScrollBarAlwaysOn : 总是显⽰滚动条。

3.重要信号及说明

信号说明
textChanged()⽂本内容改变时触发
selectionChanged()选中范围改变时触发
cursorPositionChanged()光标移动时触发
undoAvailable(bool)可以进⾏ undo 操作时触发
redoAvailable(bool)可以进⾏ redo 操作时触发
copyAvaiable(bool)⽂本被选中/取消选中时触发

4.示例一:获取多行输入框的内容

①在界面中创建一个label和一个TextEdit控件
在这里插入图片描述

②编写多行输入框TextEdit的槽函数,信号选择textChanged()

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_textEdit_textChanged()
{const QString& content = ui->textEdit->toPlainText();qDebug() << content;ui->label->setText(content);
}

③运行程序,观察结果
在这里插入图片描述

5.示例二:验证输入框的各种信号

①在界面上创建一个TextEdit控件
在这里插入图片描述
②给输入框添加以下几个 slot 函数,演示textChanged(文本内容发生变化时触发)、selectionChanged(选中的文本范围发生变化时触发)、cursorPositionChanged(光标位置发生变化时触发)、undoAvailable(可以撤消的操作存在时)、redoAvailable(可以重做的操作存在时)、copyAvaiable(可以复制的文本存在时)等信号

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_textEdit_textChanged()
{qDebug() << "[TextChange]"  << ui->textEdit->toPlainText();
}void Widget::on_textEdit_selectionChanged()
{const QTextCursor& cursor = ui->textEdit->textCursor();qDebug() << "[cursorPositionChanged]" << cursor.position();
}void Widget::on_textEdit_cursorPositionChanged()
{const 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;
}

③运行代码,查看结果
输入1,undoAvailable为true,说明我们可以撤回,cursorPositionChanged光标移动到1的位置处,textChanged文本内容为1,
在这里插入图片描述

Ctrl y撤回1,可看到undoAvailable为false,说明没有可以撤回的了,redoAvailable为true,说明我们可以撤回刚才那个撤回操作
在这里插入图片描述
ctrl y,redoAvailable就为false了
在这里插入图片描述

三、ComboBox

1.简介

QComboBox是一个下拉框控件,用于在一个预定义的列表中选择一个选项。它是Qt库中的一个类,可以在Qt应用程序中使用
在这里插入图片描述

2.常见属性及说明

属性说明
currentText当前选中的⽂本
currentIndex当前选中的条⽬下标.从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1
editable是否允许修改,设为 true 时, QComboBox 的⾏为就⾮常接近 QLineEdit , 也可以设置 validator
iconSize下拉框图标 (⼩三⻆) 的⼤⼩
maxCount最多允许有多少个条⽬

3.核心方法 说明

addItem(const QString&) 添加⼀个条⽬
currentIndex() 获取当前条⽬的下标
从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1
currentText() 获取当前条⽬的⽂本内容

4.核心信号 说明

核心信号说明
activated(int); activated(const QString & text)当用户选择了⼀个选项时发出,这个时候相当于用户点开下拉框, 并且⿏标划过某个选项.此时还没有确认做出选择.
currentIndexChanged(int) currentIndexChanged(const QString& text)当前选项改变时发出. 此时用户已经明确的选择了⼀个选项. 用户操作或者通过程序操作都会触发这个信号.
editTextChanged(const QString &text)当编辑框中的⽂本改变时发出(editable 为 true 时有效)

5.示例一:ComboBox的基本使用

①拖拽三个comboBox下拉框和一个pushbutton按钮
在这里插入图片描述
②编写widget.cpp文件,添加下拉框中的选项

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//添加条目ui->comboBox->addItem("数据库原理");ui->comboBox->addItem("概率论");ui->comboBox_2->addItem("体育课");ui->comboBox_2->addItem("心理课");ui->comboBox_3->addItem("动漫鉴赏");ui->comboBox_3->addItem("电影鉴赏");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << "专业课选择" << ui->comboBox->currentText();qDebug() << "必修课选择" << ui->comboBox_2->currentText();qDebug() << "选修课选择" << ui->comboBox_3->currentText();
}

③运行程序观察结果
在这里插入图片描述

6.示例二:从文件中读取数据填充下拉框中的条目

①从界面上拖拽一个下拉框comboBox,然后创建一个txt文件,每个数据占一行
在这里插入图片描述
②编写widget.cpp文件,从文件中读取数据添加条目到comboBox

#include "widget.h"
#include "ui_widget.h"
#include <fstream>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);std::ifstream file("D:/QT/code/ComboBox_2/config.txt");std::string line;while(std::getline(file, line)){ui->comboBox->addItem(QString::fromStdString(line)); //将std::string转化为QString}file.close();   //关闭文件,防止资源泄漏
}Widget::~Widget()
{delete ui;
}

③运行代码查看结果
在这里插入图片描述

四、SpinBox

1.简介

使用 QSpinBox 或者 QDoubleSpinBox 表示 “微调框”, 它是带有按钮的输入框. 可以用来输⼊整数/浮点数. 通过点击按钮来修改数值大小
在这里插入图片描述

2.常见属性及说明

属性说明
value存储的数值.
singleStep每次调整的 “步长”. 按下⼀次按钮数据变化多少.
displayInteger数字的进制,例如 displayInteger 设为 10, 则是按照 10 进制表⽰. 设为 2 则为 2进制表⽰.
minimum最小值
maximum最大值
buttonSymbol按钮上的图标
UpDownArrows上下箭头形式
PlusMinus加减号形式
NoButtons没有按钮
accelerated (加速的)按下按钮时是否为快速调整模式
correctionMode输入有误时如何修正。

3.重要信号及说明

信号说明
textChanged(QString)微调框的⽂本发⽣改变时会触发.参数 QString 带有 前缀 和 后缀.
valueChanged(int)微调框的⽂本发⽣改变时会触发.参数 int, 表⽰当前的数值.

4.示例一:QSpinBox的使用

① 在界面中创建三个下拉框ComboBox、三个spinBox微调框、一个pushbutton按钮
在这里插入图片描述

②编写widget.cpp,微调框初始值设置为0

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->comboBox->addItem("巨⽆霸");ui->comboBox->addItem("⻨辣鸡腿堡");ui->comboBox_2->addItem("薯条");ui->comboBox_2->addItem("⻨辣鸡翅");ui->comboBox_3->addItem("可乐");ui->comboBox_3->addItem("雪碧");ui->spinBox->setValue(0);       //设置初始值ui->spinBox->setRange(0, 5);    //设置范围ui->spinBox_2->setValue(0);ui->spinBox_2->setRange(0, 5);ui->spinBox_3->setValue(0);ui->spinBox_3->setRange(0, 5);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << "当前下单的内容:"<< ui->comboBox->currentText() << " : " << ui->spinBox->value()<< ui->comboBox_2->currentText() << " : " << ui->spinBox_2->value()<< ui->comboBox_3->currentText() << " : " << ui->spinBox_3->value();
}

③运行程序,查看结果,我们可以通过spinBox来调整数量
在这里插入图片描述

五、DateTimeEdit

1.简介

QTimeEdit 作为时间的微调框.
QDateEdit 作为日期的微调框.
QDateTimeEdit 作为时间日期的微调框.
允许用户输入日期和时间,并提供了可视化的日历和时钟部件,方便用户选择日期和时间。它可以显示日期、时间或日期时间,具体取决于设置的格式。

2.常见属性及说明

属性说明
dateTime时间日期的值. 形如 2000/1/1 0:00:00
date单纯日期的值. 形如 2001/1/1
time单纯时间的值. 形如 0:00:00
displayFormat时间日期格式. 形如 yyyy/M/d H:mm • y 表示年份 • M 表示⽉份 • d 表示日期 • H 表示⼩时 • m 表示分钟 • s 表示秒
minimumDateTime最小时间日期
maximumDateTime最大时间日期
timeSpec• Qt::LocalTime :显示本地时间。 • Qt::UTC :显示协调世界时(UTC)。 • Qt::OffsetFromUTC :显示相对于UTC的偏移量(时差).

3.重要信号及说明

信号说明
dateChanged(QDate)日期改变时触发.
timeChanged(QTime)时间改变时触发.
dateTimeChanged(QDateTime)时间日期任意⼀个改变时触发

4.示例一:计算日期差值

①在界面上创建两个 QDateTimeEdit 和⼀个按钮, ⼀个 label
在这里插入图片描述

②编写widget.cpp,计算两个日期天、时、秒的差值

daysTo函数:计算两个日期的天数
secsTo 函数:计算两个时间的秒数.
两个日期之间的小时差值:通过 (秒数 / 3600) 换算成小时数,再余上 24 得到零几个小时.
使用 QString::number 把整数转成 QString 进行拼接.

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QDateTime timeOld = ui->dateTimeEdit_old->dateTime();QDateTime timeNew = ui->dateTimeEdit_new->dateTime();//计算日期差值int days = timeOld.daysTo(timeNew);int hours = (timeOld.secsTo(timeNew) / 3600) % 24;//设置label的内容QString text = QString("距离生日已经过去") + QString::number(days) + QString(" 天 零")+ QString::number(hours) + QString(" 个小时!");ui->label->setText(text);
}

③运行程序观察结果
在这里插入图片描述

六、Dial

1.简介

QDial是Qt框架中的一个类,用于创建一个旋钮控件。它提供了一个圆形的旋钮,用户可以通过拖动旋钮或点击旋钮上的刻度来选择一个值。QDial可以用于设置音量、亮度等可调节的参数。
在这里插入图片描述

2.常见属性及说明

属性说明
value持有的数值.
minimum最小值
maximum最大值
singleStep按下方向键的时候改变的步长
pageStep按下 pageUp / pageDown 的时候改变的步长
sliderPosition界⾯上旋钮显示的 初始位置
tracking外观是否会跟踪数值变化.默认值为 true. ⼀般不需要修改.
wrapping是否允许循环调整.即数值如果超过最⼤值, 是否允许回到最⼩值.(调整过程能否 “套圈”)
notchesVisible是否显示 刻度线
notchTarget刻度线之间的相对位置.数字越⼤, 刻度线越稀疏.

3.重要信号及说明

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发

4.示例一:使用旋钮调整窗口透明度

①拖拽一个dial旋钮与l一个abel文本框
在这里插入图片描述
②编写widget.cpp文件,设置旋钮的初始状态

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置可以循环旋转ui->dial->setWrapping(true);//设置刻度可见ui->dial->setNotchesVisible(true);//设置最大值为ui->dial->setMaximum(100);//设置最小值为ui->dial->setMinimum(0);//设置初始值为ui->dial->setValue(100);
}Widget::~Widget()
{delete ui;
}void Widget::on_dial_valueChanged(int value)
{ui->label->setText(QString("当前不透明度为:") + QString::number(value));this->setWindowOpacity((double)value / 100);
}

③运行程序观察结果
在这里插入图片描述

七、Slider

1.简介

QSlider是Qt框架中的一个控件,用于实现滑动条的功能。滑动条是用户界面中的常用控件之一,可以通过拖动滑块来选择一个值,或者通过点击滑条上的位置来快速定位。

2.常见属性及说明

属性说明
value持有的数值.
minimum最⼩值
maximum最⼤值
singleStep按下⽅向键的时候改变的步⻓.
pageStep按下 pageUp / pageDown 的时候改变的步⻓.
sliderPosition滑动条显⽰的 初始位置
tracking外观是否会跟踪数值变化. 默认值为 true. ⼀般不需要修改.
orientation滑动条的⽅向是⽔平还是垂直
invertedAppearance是否要翻转滑动条的⽅向
tickPosition刻度的位置.
tickInterval刻度的密集程度.

3.重要信号及说明

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发

4.示例一:调整窗口大小

①在界面中创建两个滑动条slider,一个是水平的一个垂直的
在这里插入图片描述
可以在此选择是垂直还是水平的滑动条
在这里插入图片描述
②完成slider滑动条的初始化,以及编写对应的槽函数
槽函数型号选用valueChanged

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->horizontalSlider->setMinimum(500);ui->horizontalSlider->setMaximum(2000);ui->horizontalSlider->setSingleStep(100); //滑块每次增加或减少的数值是 100ui->horizontalSlider->setValue(800);ui->verticalSlider->setMinimum(500);ui->verticalSlider->setMaximum(1500);ui->verticalSlider->setSingleStep(100);ui->verticalSlider->setValue(600);//翻转朝向:默认滑块从下向上,改成从上往下增长ui->verticalSlider->setTickInterval(true);
}Widget::~Widget()
{delete ui;
}//改变窗口大小
void Widget::on_horizontalSlider_valueChanged(int value)
{QRect rect = this->geometry();this->setGeometry(rect.x(), rect.y(), value, rect.height());qDebug() << value;
}void Widget::on_verticalSlider_valueChanged(int value)
{QRect rect = this->geometry();this->setGeometry(rect.x(), rect.y(), rect.width(), value);qDebug() << value;
}

③运行程序,可以观察到通过滑动滑动条可以实现窗口大小的改变
在这里插入图片描述

小结

今日分享就到这里啦,如果本文存在疏漏或错误的地方还请您能够指出,另外地,本年度的博客更新就到这啦,咱们明年见!!!
在这里插入图片描述

相关文章:

010 Qt_输入类控件(LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider)

文章目录 前言一、QLineEdit1.简介2.常见属性及说明3.重要信号及说明4.示例一&#xff1a;用户登录界面5.示例二&#xff1a;验证两次输入的密码是否一致显示密码 二、TextEdit1.简介2.常见属性及说明3.重要信号及说明4.示例一&#xff1a;获取多行输入框的内容5.示例二&#x…...

C++设计模式:享元模式 (附文字处理系统中的字符对象案例)

什么是享元模式&#xff1f; 享元模式是一个非常实用的结构型设计模式&#xff0c;它的主要目的是节省内存&#xff0c;尤其在需要创建大量相似对象时。 通俗解释&#xff1a; 想象我们在写一本书&#xff0c;每个字母都需要表示出来。如果每个字母都单独用对象表示&#xff…...

机器学习之 KNN 算法

一、引言 在机器学习领域中&#xff0c;K 近邻&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;算法是一种简单而有效的分类和回归算法。它的基本思想是根据数据点之间的距离来确定它们的相似性&#xff0c;并根据其最近的邻居的类别或数值来预测新数据点的类别或…...

矩阵:Input-Output Interpretation of Matrices (中英双语)

矩阵的输入-输出解释&#xff1a;深入理解与应用 在线性代数中&#xff0c;矩阵与向量的乘积 ( y A x y Ax yAx ) 是一个极为重要的关系。通过这一公式&#xff0c;我们可以将矩阵 ( A A A ) 看作一个将输入向量 ( x x x ) 映射到输出向量 ( y y y ) 的线性变换。在这种…...

ctfhub技能树——disable_functions

LD_PRELOAD 来到首页发现有一句话直接就可以用蚁剑连接 根目录里有/flag但是不能看;命令也被ban了就需要绕过了 绕过工具在插件市场就可以下载 如果进不去的话 项目地址: #本地仓库;插件存放 antSword\antData\plugins 绕过选择 上传后我们点进去可以看到多了一个绕过的文件;…...

Web3.0安全开发实践:探索比特币DeFi生态中的PSBT

近年来&#xff0c;部分签名比特币交易&#xff08;PSBT&#xff09;在比特币生态系统中获得了显著关注。随着如Ordinal和基于铭文的资产等创新的兴起&#xff0c;安全的多方签名和复杂交易的需求不断增加&#xff0c;这使得PSBT成为应对比特币生态不断发展中不可或缺的工具。 …...

【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?

文章目录 前言问题描述问题分析问题解决1.允许所有用户上传驱动文件2.如果是想只上传白名单的驱动 前言 该方法适合永洪BI系列产品&#xff0c;包括不限于vividime desktop&#xff0c;vividime z-suit&#xff0c;vividime x-suit产品。 问题描述 当我们连接数据源的时候&a…...

Lecture 6 Isolation System Call Entry

文章目录 一 重要的函数清单1 write(user/usys.s) 一 usertrap函数(C code) Lecture6 Isolation & System Call Entry视频链接 对应XV6 Book Chapter 4 Traps and device drivers 一 重要的函数清单 1 write(user/usys.s) .global write write:li a7, SYS_writeecallret…...

重温设计模式----装饰模式

文章目录 装饰模式定义UML 图其主要优点包括&#xff1a;装饰模式的主要角色有&#xff1a;C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式必生成子类更加灵活 装饰模式&#xff08;Decorator Pattern&…...

图像处理-Ch2-空间域的图像增强

Ch2 空间域的图像增强 文章目录 Ch2 空间域的图像增强Background灰度变换函数(Gray-level Transformation)对数变换(Logarithmic)幂律变换(Power-Law)分段线性变换函数(Piecewise-Linear)对比度拉伸(Contrast-Stretching)灰度级分层(Gray-level Slicing) 直方图处理(Histogram …...

uniapp Native.js原生arr插件服务发送广播到uniapp页面中

前言 最近搞了个设备&#xff0c;需求是读取m1卡&#xff0c;厂家给了个安卓原生demo&#xff0c;接入arr插件如下&#xff0c;接入后发现还是少了一部分代码&#xff0c;设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录&#xff0c;最后面是解决办法&#xf…...

重温设计模式--1、组合模式

文章目录 1 、组合模式&#xff08;Composite Pattern&#xff09;概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式&#xff08;Composite Pattern&#xff09;概述 定义&#xff1a;组合模式是一种结构型设计模式&#xff0c;它允许你将对象组合成…...

关于鸿蒙架构feature

鸿蒙feature层模块架构 model&#xff1a;定义数据类型&#xff0c;进行接口请求 view&#xff1a;视图层 写UI viewModel&#xff1a;控制层 关于逻辑和请求调用 page页...

CentOS下,离线安装vscode的步骤;

前置条件&#xff1a; 1.CentOS7; 步骤&#xff1a; 1.下载vscode指定版本&#xff0c;例如&#xff1b; 例如 code-1.83.1-1696982959.el7.x86_64.rpm 2.使用下面命令&#xff1a; sudo rpm -ivh code-1.83.1-1696982959.el7.x86_64.rpm 其他&#xff1a; 卸载vscode的命…...

.NET周刊【12月第3期 2024-12-15】

国内文章 重磅推出 Sdcb Chats&#xff1a;一个全新的开源大语言模型前端 https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro Sdcb Chats是一个新推出的开源大语言模型前端&#xff0c;旨在提升用户交互体验&#xff0c;并填补市场上基于.NET的前端空白。它引入树状…...

操作系统(23)外存的存储空间的管理

一、外存的基本概念与特点 定义&#xff1a;外存&#xff0c;也称为辅助存储器&#xff0c;是计算机系统中用于长期存储数据的设备&#xff0c;如硬盘、光盘、U盘等。与内存相比&#xff0c;外存的存储容量大、成本低&#xff0c;但访问速度相对较慢。特点&#xff1a;外存能够…...

vue3中多层级路由缓存失效问题

问题现象&#xff1a; 在项目中路由嵌套了超过两层后&#xff0c;使用keep-alive对路由进行页面的缓存&#xff0c;发现并不能生效。 使用的路由结构&#xff1a; // 一级路由path: menu1,component: () > import(/views/demos/nested/menu1/index), // Parent router-vie…...

Kerberoasting 离线爆破攻击

当域用户请求某个域内服务后&#xff0c;kdc 通常会返回一个加密的 st 服务票据&#xff0c;此 st 服务票据被服务 hash 加密&#xff0c;当我们将使用密码字典派生的多个 hash 值来尝试解密 st 服务票据&#xff0c;如果能够揭秘成功&#xff0c;则说明字典中存在目标服务账号…...

无人机双目视觉鲁棒定位方法!

无人机双目视觉鲁棒定位方法是一种先进的定位技术&#xff0c;它利用两个摄像头&#xff08;即双目相机&#xff09;模拟人的视觉系统&#xff0c;通过视差来确定物体的位置。这种方法在无人机定位领域具有广泛的应用前景&#xff0c;特别是在GPS信号拒止或弱纹理环境中&#x…...

vulnhub靶场——Log4j2

第一步:搭建靶场环境 #开启环境 cd vulhub/log4j/CVE-2021-44228 docker-compose up -d 来到网站首页 第二步:搭建一个dnslog平台上获取我们注入的效果 第三步:发现 /solr/admin/cores?action 这里有个参数可以传 我们可以看到留下了访问记录并且前面的参数被执行后给我们回…...

第十六章 C++ 字符串

C 字符串 C 提供了以下两种类型的字符串表示形式&#xff1a; C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的…...

centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!

在 CentOS 系统中&#xff0c;权限管理是操作系统的核心功能之一&#xff0c;确保不同用户和进程对文件、目录以及设备的访问被合理控制。 权限系统主要包括传统的 Unix 权限模型、特殊权限&#xff08;SetUID、SetGID、Sticky 位&#xff09;和更精细的访问控制列表&#xff…...

【k8s】访问etcd

1. 配置 export.sh export ETCDCTL_API3 # Kubernetes 1.13 使用 API v3 export ETCDCTL_ENDPOINTShttps://[2023:145:246:270::3]:2379 # etcd API endpoint&#xff0c;通常为集群内的 etcd 服务地址 export ETCDCTL_CACERT/etc/kubernetes/certs/ca.crt # CA 证书文件 …...

【教程宝典】基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作

“遥感”助推蓝碳生态系统碳储量调查简介(1)蓝碳生态系统碳储量研究背景 红树林、海草床和盐沼是海岸带最具固碳效率的三大生态系统&#xff0c;统称为“蓝色碳汇”。虽然这三类生态系统的覆盖面积不到海床的0.5%&#xff0c;植物生物量只占陆地植物生物量的0.05%&#xff0c;…...

运动健康中的实体和关系

1. 实体类别 1.1 个人健康相关实体 个人&#xff08;Person&#xff09;&#xff1a;参与体育活动的个体&#xff0c;如运动员、健身爱好者、患者等。健康状况&#xff08;HealthStatus&#xff09;&#xff1a;描述个人的身体状态&#xff0c;如体重、血压、心率、身体质量指…...

【进阶编程】MVC和MVVM实现前后端分离的实现

在 WPF 开发中&#xff0c;通常使用 MVVM&#xff08;Model-View-ViewModel&#xff09;架构来分离视图和业务逻辑&#xff0c;但在某些情况下&#xff0c;你可能希望将 MVC&#xff08;Model-View-Controller&#xff09;模式与 MVVM 结合使用。这种结合有时是为了兼顾不同的架…...

ML-Agents 概述(二)

注&#xff1a;本文章为官方文档翻译&#xff0c;如有侵权行为请联系作者删除 ML-Agents Overview - Unity ML-Agents Toolkit–原文链接 ML-Agents 概述&#xff08;一&#xff09; ML-Agents 概述&#xff08;二&#xff09; 训练方法&#xff1a;特定环境 除了上一节介绍的…...

[Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换

上次更新已然四个月前&#xff0c;零零散散的工作结束&#xff0c;终于有时间写点东西记录一下~ 实际使用中&#xff0c;经常会碰到同一个对象需要切换不同的材质&#xff0c;固然可以通过C#直接替换材质球。 或者在ShaderGraph中使用Comparison配合Branch实现切换&#xff…...

国自然面上项目分享|基于人工智能和病理组学的早癌筛查算法研究|基金申请·24-12-24

小罗碎碎念 今天分享的项目为【常规面上项目】&#xff0c;执行年限为2018年1月至2021年12月&#xff0c;直接费用为55万元。 今天分享的这个项目很有意思&#xff0c;因为这个项目的成果是团队2020年申报基金委优青的材料&#xff0c;并且还有临床验证和商业转化&#xff0c;值…...

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #...

21.打印文件地址 C#例子

\是一个有特殊功能的字符&#xff0c;当想要打印一个如下地址时&#xff0c; C:\Users\SMTC\source\repos\练习 会出现报错&#xff0c;之所以会报错就是因为这里出现了\ \可以把后面的一个符号变为真符号&#xff0c;而不是有特殊功能的符号 在字符串的前面可以让这个字符…...

golang LeetCode 热题 100(动态规划)-更新中

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a;输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…...

Everspin代理MR25H10CDFR存储MRAM

RAMSUN提供的MR25H10CDFR是一款具备1,048,576位存储容量的磁阻随机存取存储器&#xff08;MRAM&#xff09;设备&#xff0c;由131,072个8位字构成。该设备提供与串行EEPROM和串行闪存兼容的读/写时序&#xff0c;无写延迟&#xff0c;并且其读/写寿命是不受限制的。 与其它串…...

Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格

目录 1.工作台 1.1 需求分析和设计 1.1.1 产品原型 1.1.2 接口设计 1.2 代码导入 1.2.1 Controller层 1.2.2 Service层接口 1.2.3 Service层实现类 1.2.4 Mapper层 1.3 功能测试 1.4 代码提交 2.Apache POI 2.1 介绍 2.2 入门案例 2.2.1 将数据写入Excel文件 2.2.2 读取Excel文…...

基于vue框架的的校园后台报修管理系统设计与实现u7fui(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,维修工,报修信息,维修情况,评价记录,请假记录,改派申请记录 开题报告内容 基于Vue框架的校园后台报修管理系统设计与实现开题报告 一、项目背景及意义 随着信息技术的飞速发展&#xff0c;校园管理日益趋向于智能化和高效化。传…...

TCP/IP 模型中,网络层对 IP 地址的分配与路由选择

TCP/IP 模型中&#xff0c;网络层对 IP 地址的分配与路由选择 一. IP 地址的分配1.1 IP 地址的结构与分类1.2 IP 地址的分配方式 二. 路由选择2.3 路由协议2.4 路由表的结构2.5 路由选择的算法2.6 默认路由与静态路由 三. 网络层的 IP 地址分配与路由选择总结 前言 这是我在这个…...

废品回收小程序:助力企业转型发展

废品回收在当下日常生活中非常常见&#xff0c;家中的各种可回收物都能够拿到回收站进行回收&#xff0c;减少浪费&#xff0c;不过在回收物较多的情况下&#xff0c;回收又成为了一个问题。 目前&#xff0c;随着智能生活的流行&#xff0c;废品回收开启了“数字化时代”&…...

iptables交叉编译(Hisiav300平台)

参考文章&#xff1a;https://blog.csdn.net/Bgm_Nilbb/article/details/135714738 https://bbs.archlinux.org/viewtopic.php?pid1701065 1、libmnl 交叉编译 tar xvf libmnl-1.0.5.tar.bz2 sudo chmod 777 -R libmnl-1.0.5 cd libmnl-1.0.5 mkdir _install //host和CC需要修…...

概率论 期末 笔记

第一章 随机事件及其概率 利用“四大公式”求事件概率 全概率公式与贝叶斯公式 伯努利概型求概率 习题 推导 一维随机变量及其分布 离散型随机变量&#xff08;R.V&#xff09;求分布律 利用常见离散型分布求概率 连续型R.V相关计算 利用常见连续型分布的计算 均匀分布 正态…...

【Chrome】浏览器提示警告Chrome is moving towards a new experience

文章目录 前言一、如何去掉 前言 Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies. 这是谷歌浏览器&#xff08;Chrome&#xff09;关于隐私策略更新相关的提示 提示&#xff1a;以下是本篇文章正文内容&…...

xdoj 数字个数统计

1-3 数字个数统计 3 时间限制&#xff1a;1S 题目描述&#xff1a; 输入两个三位正整数 A 和 B&#xff0c;在区间[A,B]之间&#xff0c;或在区间[B,A]之间&#xff0c; 完成统计任务&#xff1a; 3 的倍数数字个数、4 的倍数数字个数和 5 的倍数且不是 2 的倍数 的数字个数…...

I.MX6U 启动方式详解

一、启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置 来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就…...

Linux自动挂载与卸载USB设备

一、实现udev规则 创建规则&#xff1a;sudo vi /etc/udev/rules.d/usb.rules SUBSYSTEMS"usb",SUBSYSTEM"block",ACTION"add",RUN{program}"/bin/mkdir /mnt/%k",RUN{program}"/usr/bin/systemd-mount --no-block --collect …...

下载运行Vue开源项目vue-pure-admin

git地址&#xff1a;GitHub - pure-admin/vue-pure-admin: 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统&#xff08;兼容移动端&#xff09; 安装pnpm npm install -g pnpm # 国内 淘宝 镜像源 pnpm config set registry https://registry.npmmirror.com/…...

中国农业科学院深圳农业基因组研究所合成生物学研究中心-随笔06

更新读研择校贴&#xff0c;生物合成行业领先的单位一览SWHC002 中国科学院合成生物学重点实验室介绍-随笔05-CSDN博客 中国农业科学院深圳农业基因组研究所&#xff08;基因组所&#xff09;合成生物学研究中心 https://www.agis.org.cn/bsgk/yjsjj/index.htm #官网 htt…...

Java项目--仿RabbitMQ的消息队列--基于MQ的生产者消费者模型

目录 一、引言 二、生产者 三、消费者 四、扩展 五、总结 一、引言 本篇文章就是本次Java项目的最后一篇文章了&#xff0c;本篇文章主要介绍基于MQ的生产者消费者模型的代码编写 二、生产者 public class DemoConsumer {public static void main(String[] args) throws…...

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学&#xff0c;但本文只是对 VUE 小白&#xff0c;其它的基功还是有一丢丢的&#xff0c;不太懂的同学去看看一下详解&#xff0c;我这里记述的是自己的理解和观点。见谅&#xff01; index.html&#xff1a;入口文件&#xff08;以创建 vue3 项目的默认文件…...

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中&#xff0c;限流的场景是很多的&#xff0c;尤其是要提供接口给外部使用的时候&#xff0c;但是自己去封装的话&#xff0c;相对比较耗时。 本方式可以使用默认&#xff08;方法&#xff09;&#xff0c;ip、自定义参数进行限流&#xff0c;根据时间…...

SAP SD销售订单处理流程

本篇博文中的流程&#xff1a; 创建销售订单→依据销售订单创建交货单→依据销售订单开票 一、VA01创建销售订单 1、填入必填项&#xff0c;回车。可点击左上角的依照参考创建按钮。 依照参考创建可以参考以下6个。其中询价单、报价单、订单、合同和计划协议可以理解为特殊的…...

MySQL中Seconds_Behind_Master是怎么计算的

目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…...