QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

输入类控件既可以进行显示,也能让用户输入一些内容!

文章目录

  • 1.Line Edit
    • 1.1 用户输入个人信息
    • 1.2 基于正则表达式的文本限制
    • 1.3 验证两次输入的密码是否一致
    • 1.4 让输入的密码可以被查看
  • 2.Text Edit
    • 2.1 输入和显示同步
    • 2.1 其他信号出发情况
  • 3.ComboBox
    • 3.1 模拟高考志愿选择
    • 3.2 通过加载文件的方式填充下拉框
  • 4.SpinBox
  • 5.DateEdit &TimeEdit & DateTimeEdit
    • 时间计算器(两个时间相隔多少天/多少小时)
  • 6.Dial
    • 通过Dial修改窗口的透明度
  • 7.Slider
    • 7.1利用滑动条调整窗口的大小
    • 7.2利用滑动条调整窗口的大小(利用快捷键)
  • 总结


1.Line Edit

QLineEdit ⽤来表⽰单⾏输⼊框.可以输⼊⼀段⽂本,但是不能换⾏.

属性说明
text输⼊框中的⽂本
inputMask输⼊内容格式约束
maxLength最⼤⻓度
frame是否添加边框
echoMode显⽰⽅式.(比如输入密码那种,输入的文本会被*代替!)
cursorPosition光标所在位置
alignment⽂字对⻬⽅式,设置⽔平和垂直⽅向的对⻬.
dragEnabled是否允许拖拽
readOnly是否是只读的(不允许修改)
placeHolderText当输⼊框内容为空的时候,显⽰什么样的提⽰信息
clearButtonEnabled是否会⾃动显⽰出"清除按钮".

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
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是新的⽂本。代码对⽂本的修改不能触发这个信号.

1.1 用户输入个人信息

在这里插入图片描述

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//第一个学校输入框ui->lineEdit_school->setPlaceholderText("请输入你的学校级别(985,211,一本,二本,专科,其他)");ui->lineEdit_school->setClearButtonEnabled(true);  //输入信息后最后面有个叉叉,可以取消输入内容//第二个专业输入框ui->lineEdit_major->setPlaceholderText("请输入你的所学专业(例:通信工程、计算机技术与科学)");ui->lineEdit_major->setClearButtonEnabled(true);//第三个输入框ui->lineEdit_money->setPlaceholderText("请输入你的期望薪资,我们将对此保密");ui->lineEdit_money->setEchoMode(QLineEdit::Password);//第五个输入框ui->lineEdit_tel->setPlaceholderText("请输入你的电话(11位)");ui->lineEdit_tel->setClearButtonEnabled(true);ui->lineEdit_tel->setInputMask("000-0000-0000");//设置输入格式,0代表只能输入数字,严格限制11位
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QString gender = ui->radioButton_man->isChecked()?"男":"女";qDebug() << "学校级别:" << ui->lineEdit_school->text() << "\n"<<  "所学专业:" << ui->lineEdit_major->text() << "\n"<<  "期望薪资:" << ui->lineEdit_money->text() << "\n"<< "性别:" << gender << "\n"<< "电话"  << ui->lineEdit_tel->text();
}

1.2 基于正则表达式的文本限制

inputMask的功能比较有限,只能进行简单的验证
如果想要更好的约束文本,就需要使用到正则表达式
正则表达式本质上就是一个带有特殊字符的字符串,特殊字符用来表示另一个字符串的特征。借助正则表达式就可以描述出具有一定特点的字符串。
正则表达式文档:https://learn.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/ae5bf541(v=vs.90)?redirectedfrom=MSDN
链接: 正则表达式文档
正则表达式测试工具: https://regextester.buyaocha.com/
链接: 正则表达式测试工具

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#include <QRegExpValidator>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//需要给输入框设置验证器,基于正则表达式完成验证QRegExp regExp("^1\\d{10}$");ui->lineEdit->setValidator(new QRegExpValidator(regExp));//设置验证器
}Widget::~Widget()
{delete ui;
}void Widget::on_lineEdit_textEdited(const QString &text)
{QString content = text;int pos = 0;if(ui->lineEdit->validator()->validate(content,pos) == QValidator::Acceptable){//验证通过ui->pushButton->setEnabled(true);}else{//验证不通过ui->pushButton->setEnabled(false);}
}

1.3 验证两次输入的密码是否一致

在这里插入图片描述

#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_title->setText("请输入密码!");
}Widget::~Widget()
{delete ui;
}void Widget::compare()
{const QString& s1 = ui->lineEdit->text();const QString& s2 = ui->lineEdit_2->text();if(s1.isEmpty() && s2.isEmpty()) {ui->label_title->setText("密码为空");}else if(s1 == s2) {ui->label_title->setText("密码设置成功!");}else{ui->label_title->setText("两次密码不一致,请检查!");}
}void Widget::on_lineEdit_textEdited(const QString &arg1)
{this->compare();
}void Widget::on_lineEdit_2_textEdited(const QString &arg1)
{this->compare();
}

在这里插入图片描述

1.4 让输入的密码可以被查看

在这里插入图片描述
只需要在1.3代码的基础上加入一个checkBox的槽函数即可!

void Widget::on_checkBox_toggled(bool checked)
{if(checked){ui->lineEdit->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit->setEchoMode(QLineEdit::Password);}
}void Widget::on_checkBox_2_toggled(bool checked)
{if(checked){ui->lineEdit_2->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit_2->setEchoMode(QLineEdit::Password);}
}

2.Text Edit

QTextEdit表⽰多⾏输⼊框.也是⼀个富⽂本&markdown编辑器.
并且能在内容超出编辑框范围时⾃动提供滚动条.

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

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

2.1 输入和显示同步

即在多行输入框中输入什么,标签lebel就显示什么
这里主要展示了textChanged信号的触发情况,即文本改变时就会触发!
在这里插入图片描述

void Widget::on_textEdit_textChanged()
{const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);
}

2.1 其他信号出发情况

这里展示了其他信号的情况
比如撤销,恢复,文字是否被选中,选择的范围,光标的位置等等。

#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& text = ui->textEdit->toPlainText();ui->label->setText(text);
}void Widget::on_textEdit_selectionChanged()
{//选择范围的提示,cursor对象得到当前光标的相关情况QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "选择范围改变:"<< cursor.selectedText();
}void Widget::on_textEdit_cursorPositionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "光标到位置变到:" << cursor.position();
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "撤销情况:" << b;
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "恢复情况:" << b;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "文本被选中情况:" << b;
}

在这里插入图片描述

3.ComboBox

QComboBox 表⽰下拉框.

属性说明
currentText当前选中的⽂本
currentIndex当前选中的条⽬下标.
editable是否允许修改
frame是否添加边框
iconSize下拉框图标(⼩三⻆)的⼤⼩
maxCount最多允许有多少个条⽬

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

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

3.1 模拟高考志愿选择

#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->addItem("国防科技大学");ui->comboBox->addItem("上海交通大学");ui->comboBox_2->addItem("计算机学院");ui->comboBox_2->addItem("通信与信息工程学院");ui->comboBox_2->addItem("微电子学院");ui->comboBox_2->addItem("人工智能学院");ui->comboBox_3->addItem("计算机技术与科学");ui->comboBox_3->addItem("通信工程");ui->comboBox_3->addItem("物联网技术");ui->comboBox_3->addItem("电子信息工程");ui->comboBox_3->addItem("人工智能技术");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << ui->comboBox->currentText()<< ","<< ui->comboBox_2->currentText()<< ","<< ui->comboBox_3->currentText();
}

在这里插入图片描述

下拉框还可以直接在ui界面内添加内容!
在这里插入图片描述

3.2 通过加载文件的方式填充下拉框

下拉框里的内容,很多时候不是代码写死的,而是通过网络/文件/加载数据得到的!
在这里插入图片描述

4.SpinBox

使⽤QSpinBox 或者QDoubleSpinBox 表⽰"微调框",它是带有按钮的输⼊框.可以⽤来输⼊整数/浮点数.通过点击按钮来修改数值⼤⼩.

属性说明
value存储的数值.
singleStep每次调整的"步⻓".按下⼀次按钮数据变化多少.
displayInteger数字的进制.例如displayInteger设为10,则是按照10进制表⽰.设为2则为2进制表⽰
minimum最⼩值
maximum最⼤值
suffix后缀
prefix前缀
wrapping是否允许换⾏
frame是否带边框
alignment⽂字对⻬⽅式.
readOnly是否允许修改
buttonSymbol按钮上的图标.
accelerated(加速的)按下按钮时是否为快速调整模式
correctionMode输⼊有误时如何修正.
keyboardTrack是否开启键盘跟踪.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

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

针对上面第三部分的内容李荣SpinBox选择学制:
在这里插入图片描述

5.DateEdit &TimeEdit & DateTimeEdit

在这里插入图片描述
这几个空间用法都一样,我们选择一个进行说明即可,以DateTimeEdit为例:

属性说明
dateTime时间⽇期的值.形如2025/1/1 0:00:00
date单纯⽇期的值.形如2025/1/1
time单纯时间的值.形如0:00:00
displayFormat时间⽇期格式.形如yyyy/M/d H:mm
minimumDateTime最⼩时间⽇期
maximumDateTime最⼤时间⽇期
timeSpec1.Qt::LocalTime:显⽰本地时间。2. Qt::UTC:显⽰协调世界时(UTC)。3. Qt::OffsetFromUTC:显⽰相对于UTC的偏移量(时差).

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

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

时间计算器(两个时间相隔多少天/多少小时)

#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_pushButton_clicked()
{//先获取到两个时间QDateTime oldtime = ui->dateTimeEdit->dateTime();QDateTime newtime = ui->dateTimeEdit_2->dateTime();//利用QT内置函数daysto和secsto计算时间差值int days = oldtime.daysTo(newtime);int seconds = oldtime.daysTo(newtime);//因为已经计算了days了,所以要把seconds(秒)换算成小时int hours = (seconds/3600) % 24;//只需要换算成24小时内的时间即可//将结果显示到label中ui->label->setText(QString("计算结果:")+QString::number(days)+QString("天")+QString::number(hours)+QString("小时"));
}

在这里插入图片描述

6.Dial

使⽤QDial 表⽰⼀个旋钮.有些程序,通过⿏标拖动旋钮旋转,即可完成⼀些相关的设置.

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发.

通过Dial修改窗口的透明度

void Widget::on_dial_valueChanged(int value)
{qDebug() << value;//不透明度是一个小数,将dial的数值也化为100份,调节就更有规律this->setWindowOpacity((double)value/100);
}

在这里插入图片描述

7.Slider

使⽤QSlider 表⽰⼀个滑动条.
QSlider和QDial都是继承⾃QAbstractSlider ,因此⽤法上基本相同.

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发.

7.1利用滑动条调整窗口的大小

  ui->horizontalSlider->setMinimum(100);//最小ui->horizontalSlider->setMaximum(2000);//最大ui->horizontalSlider->setValue(800);//初始值ui->horizontalSlider->setSingleStep(50);//步长ui->verticalSlider->setMinimum(100);//最小ui->verticalSlider->setMaximum(1500);//最大ui->verticalSlider->setValue(600);//初始值ui->verticalSlider->setSingleStep(50);//步长void Widget::on_horizontalSlider_valueChanged(int value)
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), value, rect.height());
}void Widget::on_verticalSlider_valueChanged(int value)
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), rect.width(), value);
}

在这里插入图片描述

7.2利用滑动条调整窗口的大小(利用快捷键)

//利用快捷键,需要用到QShortcutQShortcut* shortcut1 = new QShortcut(this);shortcut1->setKey(QKeySequence("-"));QShortcut* shortcut2 = new QShortcut(this);shortcut2->setKey(QKeySequence("+"));//使用信号槽,感知快捷键被按下connect(shortcut1,&QShortcut::activated,this,&Widget::subValue);connect(shortcut2,&QShortcut::activated,this,&Widget::addValue);void Widget::subValue()
{// 获取当前值int value = ui->horizontalSlider->value();value -= ui->horizontalSlider->singleStep();if (value < ui->horizontalSlider->minimum()) {value = ui->horizontalSlider->minimum();}ui->horizontalSlider->setValue(value);
}void Widget::addValue()
{int value = ui->horizontalSlider->value();value += ui->horizontalSlider->singleStep();if (value > ui->horizontalSlider->maximum()) {value = ui->horizontalSlider->maximum();}ui->horizontalSlider->setValue(value);
}void Widget::on_horizontalSlider_valueChanged(int value)//可以用快捷键控制
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), value, rect.height());
}void Widget::on_verticalSlider_valueChanged(int value)//不可以用快捷键控制
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), rect.width(), value);
}

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

24_游戏启动逻辑梳理总结

首先这个项目从游戏根入口GameRoot.cs的初始化开始 分为 服务层初始化Svc.cs 与 业务系统层初始化Sys.cs 而服务层 分为 资源加载服务层ResSvc.cs 与 音乐播放服务层AudioSvc.cs 而在 资源加载服务层ResSvc.cs中 初始化了 名字的 配置文件 而音乐播放服务层AudioSvc.cs 暂时没…

【25考研】中科院软件考研复试难度分析!

中科院软件复试不需要上机&#xff01;且对专业综合能力要求较高&#xff01;提醒同学一定要认真复习&#xff01; 一、复试内容 二、参考书目 官方并未明确给出&#xff0c;建议同学参考初试书目&#xff1a; 1&#xff09;《数据结构&#xff08;C语言版&#xff09;》严蔚…

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件&#xff0c;到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目&#xff0c;从项目的main示例拷贝过来。 CameraOnvif.h #pragma once#include <QObject> #include &l…

16.好数python解法——2024年省赛蓝桥杯真题

问题描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。 给定一个正整数N,请计算从1到N一共有多少个好数。 输入格式 一个整数N。 输出格式 一个整数代表答案。 样例输入 1 …

Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )

本章主要是关于整体页面布局及样式处理&#xff0c;在进行这一章代码前&#xff0c;先将前两章中的示例代码部分删除&#xff08;如Home.vue、About.vue、counter.ts、App.vue中引用等&#xff09; 1 整体页面布局 页面整体布局构成了产品的框架基础&#xff0c;通常涵盖主导…

SQL调优讨论

说明&#xff1a;狭义的SQL调优&#xff0c;指对慢SQL&#xff08;一般是Select语句&#xff0c;或包含Select的语句&#xff09;优化&#xff0c;在不改变查询结果的情况下提高SQL执行效率。广义上的SQL调优&#xff0c;指对某个慢查询优化&#xff0c;通过一些类操作提供查询…

Django基础之ORM

一.前言 上一节简单的讲了一下orm&#xff0c;主要还是做个了解&#xff0c;这一节将和大家介绍更加细致的orm&#xff0c;以及他们的用法&#xff0c;到最后再和大家说一下cookie和session&#xff0c;就结束了全部的django基础部分 二.orm的基本操作 1.settings.py&#x…

PageView组件的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了如何屏蔽事件关的内容,本章回中将介绍PageView Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的PageView是指左右滑动或者上下滑动显示不同的页面&#xff0c;Flutter把它…

Flutter:自定义Tab切换,订单列表页tab,tab吸顶

1、自定义tab切换 view <Widget>[// 好评<Widget>[TDImage(assetUrl: assets/img/order4.png,width: 36.w,height: 36.w,),SizedBox(width: 10.w,),TextWidget.body(好评,size: 24.sp,color: controller.tabIndex 0 ? AppTheme.colorfff : AppTheme.color999,),]…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(一)

Understanding Diffusion Models: A Unified Perspective&#xff08;一&#xff09; 文章概括引言&#xff1a;生成模型背景&#xff1a;ELBO、VAE 和分层 VAE证据下界&#xff08;Evidence Lower Bound&#xff09;变分自编码器 &#xff08;Variational Autoencoders&#x…

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境&#xff1a;QT6、OPENCV3.9的sources文件 OPENCV下载网页&#xff1a;https://opencv.org/releases/ QT6下载教程&#xff1a;https://blog.csdn.net/caoshangpa/article…

Zemax 非序列模式下的颜色检测器和颜色混合

在 Zemax 的非序列模式中&#xff0c;探测器用于捕获系统中射线的信息。可以使用各种类型的探测器来捕获光学系统性能的不同方面&#xff0c;例如矩形探测器&#xff0c;它存储撞击它的 NSC 源射线的能量数据。 另一种经常使用的探测器类型是 Detector Color&#xff0c;它是一…

金融级分布式数据库如何优化?PawSQL发布OceanBase专项调优指南

前言 OceanBase数据库作为国产自主可控的分布式数据库&#xff0c;在金融、电商、政务等领域得到广泛应用&#xff0c;优化OceanBase数据库的查询性能变得愈发重要。PawSQL为OceanBase数据库提供了全方位的SQL性能优化支持&#xff0c;助力用户充分发挥OceanBase数据库的性能潜…

uni-app 程序打包 Android apk、安卓夜神模拟器调试运行

1、打包思路 云端打包方案&#xff08;每天免费次数限制5&#xff0c;最简单&#xff0c;可以先打包尝试一下你的程序打包后是否能用&#xff09;&#xff1a; HBuilderX 发行App-Android云打包 选择Android、使用云端证书、快速安心打包本地打包&#xff1a; HBuilderX …

小利特惠源码/生活缴费/电话费/油卡燃气/等充值业务类源码附带承兑系统

全新首发小利特惠/生活缴费/电话费/油卡燃气/等充值业务类源码附带U商承兑系统 安装教程如下 图片:

MacOS安装Docker battery-historian

文章目录 需求安装battery-historian实测配置国内源相关文章 需求 分析Android电池耗电情况、唤醒、doze状态等都要用battery-historian&#xff0c; 在 MacOS 上安装 battery-historian&#xff0c;可以使用 Docker 进行安装runcare/battery-historian:latest。装完不需要做任…

二叉树(了解)c++

二叉树是一种特殊的树型结构&#xff0c;它的特点是: 每个结点至多只有2棵子树(即二叉树中不存在度大于2的结点) 并且二叉树的子树有左右之分&#xff0c;其次序不能任意颠倒&#xff0c;因此是一颗有序树 以A结点为例&#xff0c;左边的B是它的左孩子&#xff0c;右边的C是…

亚博microros小车-原生ubuntu支持系列:7-脸部检测

背景知识 官网介绍&#xff1a; Face Mesh - mediapipe mpFaceMesh.FaceMesh() 类的参数有&#xff1a;self.staticMode, self.maxFaces, self.minDetectionCon, self.minTrackCon staticMode:是否将每帧图像作为静态图像处理。如果为 True&#xff0c;每帧都会进行人脸检测…

想品客老师的第六天:函数

函数基础的部分写在这里 函数声明 在js里万物皆对象&#xff0c;函数也可以用对象的方式定义 let func new Function("title", "console.log(title)");func(我是参数title); 也可以对函数赋值&#xff1a; let cms function (title) {console.log(tit…

leetcode刷题记录(八十一)——236. 二叉树的最近公共祖先

&#xff08;一&#xff09;问题描述 236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09;236. 二叉树的最近公共祖先 - 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科 [https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B…