Qt 入门 5 之其他窗口部件

Qt 入门 5 之其他窗口部件

  • 本文介绍的窗口部件直接或间接继承自 QWidget 类
  • 详细介绍其他部件的功能与使用方法

1. QFrame 类

  • QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel另外还有 QLCDNumber、QSplitter,QStackedWidget,QToolBox 和 QAbstractScrol1Area类。QAbstractScrollArea类是所有带有滚动区域的部件类的抽象基类,这里需要说明,Qt中凡是带有Abstract字样的类都是抽象基类。抽象基类是不能直接使用的,但是可以继承该类实现自己的类,或者使用它提供的子类。QAbstractScrollArea的子类中有最常用的文本编辑器类QTextEdit类和各种项目视图类,这些类会在后面章节中接触到,这里不再讲解

  • 带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame类的主要功能就是用来实现不同的边框效果,这主要是由边框形状(Shape)和边框阴影(Shadow)组合来形成的。QFrame类中定义的主要边框形状如表3-1所列,边框阴影如表3-2所列。这里要说明两个名词:lineWidth和midLineWidth,其中,lineWidth是边框边界线的宽度;而midlineWidth是在边框中额外插入的一条线的宽度,这条线的作用是为了形成3D效果,并且只在Box、Hline和VLine 表现为凸起或者凹陷时有用。QFrame的这些元素组合成的所有边框效果如图3-12所示。
    在这里插入图片描述
    在这里插入图片描述

  • 下面在程序中演示一下具体效果。新建 Qt Widgets应用项目,命名为 myframe,完成后进入项目.ui文件 拖一个 Frame到界面上,后打开mywidget.ui文件,在Qt设计器中从部件列表里拖入一个Frame 到界面上,然后在右下方的属性栏中更改其frameShape为Box,frameShadow为Sunken,lineWidth为5,midLineWidth为10。在属性栏中设置部件的属性,这和在源码中用代码实现是等效的,其实也可以直接在mywidget.cpp文件中的MyWidget构造函数里使用如下代码来代替:

    //与ui设计等效ui->frame->setFrameShape(QFrame::Box);ui->frame->setFrameShadow(QFrame::Sunken);//以上两个函数可以使用setFrameStyle(QFrame::Box|QFrame::Sunken)代替ui->frame->setLineWidth(5);ui->frame->setMidLineWidth(10);
  • 效果如下:
    在这里插入图片描述

  • 下面要讲的部件大都是Qt 的标准部件,所以大多会在Qt设计器中直接设置其属性,同样也可通过相应的代码实现。

  • 对于QFrame的子类,都继承了他的边框设置功能。

1.1 QLabel

  • 标签QLabel部件用来显示文本或者图片。在设计器中向界面拖入一个Label,然后将其拖大点,并在属性栏中设置对其方式alignment的属性,水平的改为AlignHCenter,垂直的改为 AlignVCenter,这样QLabel中的文本就会在正中间显示。
    在这里插入图片描述

  • font属性可以对字体进行设置,也可以通过代码进行设置,下面打开mywidget.cpp文件,在构造函数中添加如下代码:

 //QLabelQFont font;font.setFamily("华文行楷");font.setPointSize(20);font.setBold(true);font.setItalic(true);ui->label->setFont(font);

在这里插入图片描述

  • QFont类提供了对字体的设置,这里使用了“华文行楷”字体族、大小为20、加粗斜体,通过QLabel的setFont()函数可以使用新建的字体
  • QLabel属性栏中的wordWrap属性可以实现文本的自动换行。如果文本过长时不想自动换行,而是在后面自动省略,那么可以使用QFontMetrics类,该类用来计算给定字体的字符或字符串的大小,其中包含了多个实用函数。要使用QFontMetrics,则可以通过创建对象的方式,或通过QWidget::fontMetrics()来返回当前部件字体的QFontMetrics对象。下面继续在构造函数中添加代码:
 QString string=tr("标题太长,需要进行省略!");QString str=ui->label->fontMetrics().elidedText(string,Qt::ElideRight,180);ui->label->setText(str);

在这里插入图片描述

  • QFontMetrics 类的elidedText()函数用来进行文本省略,第一个参数用来指定要省略的文本;第二个参数是省略模式,就是“…”省略号出现的位置,包括Qt;:Elidel,eft出现在文本开头、Qt::ElideMiddle出现在文本中间,以及这里使用的 Qt;:ElideRight出现在文本末尾;第三个参数是文本的长度,单位是像素,只要第一个参数指定的文本的长度超过了这个值,就会进行省略。可以运行程序,调整参数值,从而查看不同参数的效果。
  • QLabel属性栏中的scaledContents属性可以实现缩放标签中的内容,比如在标签中放一张较大的图片,则可以选中该属性来显示整个图片。下面来看一下怎么在标签中使用图片。首先在mywidget.cpp文件中添加头文件#include,然后在构造函数中添加一行代码:
ui->label->setPixmap(QPixmap("E:/logo.png"));
  • 那么只需要使用相对路径logo.png就可以了。其实,最好的方法是使用资源管理器,将图片放到程序中,这会在第5章讲述。QLabel中还可以显示gif动态图片,在mywidget.cpp中添加头文件#include ,然后在myWidget 的构造函数中继续添加代码:
QMovie * movie=new QMovie("E:/donghua.gif");
ui->label->setMovie(move);   //在标签中添加动画
movie->start();           //开始播放

1.2 QLCDNumber

  • QLCDNumber部件可以让数码字符显示类似液晶数字一样的效果。从部件栏中拖入一个 LCD Number部件到界面上,然后更改其属性:选中smallDecimalPoint 项这样可以显示小数点;digitCount的作用是设置显示的数字的个数,设置为7,表示要显示7个数字;mode选Dec表示显示十进制数值,这里还可以设置显示为十六进制(Hex)、八进制(Oct)和二进制(Bin)数值;segmentStyle用来设置数码的显示样式,这里提供了3种样式,选择Filed;最后将value设置为456.123,这就是要显示的数值,也可以在代码中使用display()函数来设置要显示的数值。设置好后,运行程序查看效果。在 QLCDNumber中可以显示的数码有0/0、1、2、3、4、5/S、6、7、8、9/g、负号、小数点、A、B、C、D、E、F、h、H、L、o、P、r、u、U、Y、冒号、度符号(输人时使用单引号来代替)和空格

在这里插入图片描述

1.3 QStackedWidget

  • QStackedWidget类提供了一个部件栈,可以有多个界面(称为页面),每个界面可以拥有自己的部件,不过每次只能显示一个界面。这个部件需要使用QComboBox或者 QListWidget来选择它的各个页面。在设计模式中向界面上拖入一个List Widget和一个 Stacked Widget。在 List Widget上右击,在弹出的级联菜单中选择“编辑项目”项,然后在“编辑列表窗口部件”对话框中按下左下角的加号添加两项,并更该名称为“第一页”和“第二页”。然后在 Stacked Widget 上拖入一个 Label,更改文本为“第一页”,再单击 Stacked Widget 右上角的小箭头进入下一页,再拖入一个标签,更改文本为“第二页”。然后再将 Stacked Widget部件的frameShape 属性更改为 StyledPanel.最后,在信号和槽设计模式将listWidget部件的currentRowChanged()信号和stackedWidget的 setCurrentIndex()槽关联。设置完成后运行程序可以看到,现在可以单击 listWidget中的项目来选择stackedWidget的页面了。可以在设计模式中在 stackedWidget 上右击来为它添加新的页面
    在这里插入图片描述

  • 运行如下:

在这里插入图片描述

1.4 QToolBox

  • QTooIBox类提供了一列层叠窗口部件,就像常用的聊天工具 QQ中的抽屉效果从部件栏中选择ToolBox拖入到界面上,右击并在弹出的级联菜单中选择“插入页一在当前页之后”项来新插入一页。然后更改其frameShape属性为Box,并分别单击各个页的标签,更改其 currentltemText 分别为“好友”、“黑名单”和“陌生人”。完成后可以运行程序查看效果

2.按钮部件

  • QAbstractButton类是按钮部件的抽象基类,提供了按钮的通用功能。它的子类包括复选框 QCheckBox、标准按钮 QPushButton、单选框按钮 QRadioButton 和工具按钮 QToolButton。QToolButton会在后边讲到,这一小节的内容可以参考示例程序Group Box Example.
  • 新建QtWidgets应用,项目名称mybutton,基类选择QWidget,类名设为MyWidget。完成后在项目文件夹中新建images 文件夹,并且放入几张图标图片,供下面编写程序时使用。
    在这里插入图片描述

在这里插入图片描述

2.1 QPushButton

QPushButton 提供一个标准按钮。在项目中打开mywidget.ui文件,拖入3个PushButton 到界面上,然后将它们的objectName 依次更改为pushBtn1、pushBtn2和pushBtn3。下面选中pushBtn1的checkable属性,使得它可以拥有“选中”和“未选中”两种状态;再选中pushBtn2的flat属性,可以不显示该按钮的边框,然后转到pushBtn1 的toggled(bool)信号的槽,更改如下:

void MyWidget::on_pushButton1_toggled(bool checked)   //按钮是否处于被按下状态
{qDebug()<<tr("按钮是否被按下:")<<checked;
}
  • 运行如下,当pushBtn1 处于按下状态的时候,checked 为true,否则为false。
    在这里插入图片描述

  • 下面再MyWidget类构造函数中添加代码:

MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);ui->pushButton1->setText(tr("&nihao"));ui->pushButton2->setText(tr("帮助&H"));//ui->pushButton2->setIcon(QIcon("../mybutton/images/help.png"));ui->pushButton3->setText(tr("z&oom"));QMenu* menu=new QMenu(this);menu->addAction(QIcon("../mybutton/images/zoom-in.png"),tr("放大"));ui->pushButton3->setMenu(menu);}
  • 代码里为3个按钮改变了显示文本,在一个字母前加上“&”符号,则可以将这个按钮的加速键设置为Alt加上这个字母。如果要在这个文本中显示“&”符号,可以使用"&&"。也可以i使用setIcon()函数来给按钮添加图标,这里的图片文件使用了相对路径(当然也可以在设计模式通过更改icon属性来实现)。对于pushBtn3,这里为其添加了下拉菜单,现在这个菜单什么功能也没实现,运行程序可以查看效果如下:

在这里插入图片描述

2.2 QCheckBox、QRadioButton 和 QGroupBox

  • 对于调查表之类的应用,往往提供多个选项供选择,有些是可以选择多项的,有些只能选择其中一项。复选框 QCheckBox类提供了同时选择多项的功能,而QRadioButton 提供了只能选择一项的功能,一般要把一组按钮放到一个QGroupBox中来管理。
  • 在设计模式时可往界面上拖入两个GroupBox,将它们的标题分别改为“复选框和“单选框”。然后往复选框中拖人3个CheckBox,分别更改显示内容为“跑步”、“踢球”和“游泳”。再往单选框中拖入3个RadioButton,分别更改其显示内容为“很好”“一般”和“不好”。这里还可以选中CheckBox的tristate属性,让它拥有不改变状态选中状态和未选中状态3种状态。对于选择按钮后的操作,可以关联它们的state-Changed()信号和自定义的槽,也可以使用isChecked()函数查看一个按钮是否被选中。除了 Group Box,还可以使用 QButtonGroup 类来管理多个按钮。

在这里插入图片描述

3. QLineEdit

  • 行编辑器 QLineEdit部件是一个单行的文本编辑器,它允许用户输入和编辑单行的纯文本内容,而且提供了一系列有用的功能,包括撤销与恢复,剪切和拖放等操作其中,剪切复制等功能是行编辑自带的,不用自己编码实现,拖放功能会在第5章讲到这部分内容可以查看Qt的示例程序Line Edits。
  • 新建Qt Widgets应用,项目名称 mylineedit,基类QWidget,类名MyWidget。在设计模式时可往界面上拖入几个标签和 Line dit,设计界面如图3-13所示。然后将4个Line Edit 从上到下依次更改其objectName 为lineEditl 、lineEdit2 、lineEdit3 和 lineEdit4

在这里插入图片描述

3.1 显示模式

  • 行编辑器QLineEdit 有四种显示模式(echoMode),可以echoMode属性中更改他们,分别是:
    - Normal正常显示输入的信息;
    - NoEcho不显示任何输人,这样可以保证不泄露输入的字符位数;
    - Password显示为密码样式,就是以小黑点或星号之类的字符代替输人的字符;
    - PasswordEchoOnEdit在编辑时显示正常字符,其他情况下显示为密码样式。

    • 这里设置lineEditl的echoMode为Password。

3.2 输入掩码

  • QLineEdit 提供了输入掩码(inputMask)来限制输入的内容。可以使用一些特殊的字符来设置输入的格式和内容,这些字符中有的起限制作用且必须要输入一个字符,有的只是起限制作用,但可以不输入字符而是以空格代替。

  • 先来看一下这些特殊字符的含义:
    在这里插入图片描述

  • 在lineEdit2上右击,然后转到它的returnPressed()回车键按下信号的槽中,更改如下:

void MyWidget::on_lineEdit2_returnPressed()   //回车键按下信号的槽
{ui->lineEdit3->setFocus();      //让lineEdit3 获取焦点qDebug()<<ui->lineEdit2->text();     //输出lineEdit的内容qDebug()<<ui->lineEdit2->displayText();    //输出lineEdit2显示的内容
}

在这里插入图片描述

3.3 输入验证

  • 在QLineEdit 中还可以使用验证器(validator)来对输入进行约束。在mywidget.cpp 文件的构造函数中添加代码:
//新建验证器,指定范围 100-999QValidator* validator=new QIntValidator(100,999,this);//在行编辑器中使用验证器ui->lineEdit3->setValidator(validator);    
  • 在代码中为lineEdit3添加了验证器,那么它现在只能输入100~999 之间的数字再进入 lineEdit3的回车键按下信号的槽,输出lineEdit3的内容。然后运行程序会发现,其他的字符无法输人,而输入小于100的数字时,按下回车键也是没有效果的QValidator 中还提供了 QDoubleValidator,可以用它来设置浮点数。如果想设置更强大的字符约束,就要使用正则表达式了,这个在第7章会讲到,这里举一个简单的例子
QRegExp rx("- ? \d{ 1.3 }" );
OValidator*validator =new ORegExpValidator(rx,this);

这样就可以实现在开始输入“一”号或者不输入,然后输入1~3个数字的限制。

3.4 自动补全

  • QlineEdit中也提供了强大的自动补全功能,这是利用QCompleter 类实现的。在MyWidget类的构造函数中继续添加代码:
StrinqList wordList;
wordList <"Ωt"<"Qt Creator"< tr("你好");
QCompleter*completer=newQCompleter(wordList,this):/新建自动完成器//设置大小写不敏感
completer->setCaseSensitivity(Ot::CaseInsensitive);
ui->lineEdit4->setCompleter(completer):

要添加#include 头文件,运行程序,在最后一个行编辑器中输入"Q",则自动出现 “Qt” 和 “Qt Creator” 两个选项。QCompleter 的使用可以参考 Qt 的示例程序 Completer。

4. QAbstractSpinBox

  • QAbstractSpinBox类是一个抽象基类,提供了一个数值设定框和一个行编辑器来显示设定值。它有3个子类QDateTimeEdit、QSpinBox 和 QDoubleSpinBox,分别用来完成日期时间、整数和浮点数的设定。
  • 下面实战一下查看SpinBoxes示例程序。新建Qt Widgets应用,项目名称 myspinbox,基类为QWidget,类名 MyWidget。

4.1 QDateTimeEdit

  • QDateTimeEdit 类提供了一个可以说编辑日期和时间的部件。到设计模式,从部件栏中分别拖 Time Edit、Date Edit 和 Date/Time Edit 到界面上,然后设置timeEidt 的 displayFormat 为“h:mm:ssA”,这就可以使用 12 h制来显示。对于dataEdit,选中他的calendarPopup属性,就可以使用弹出的日历部件来设置如期。然后在MyWidget 类的构造函数中添加代码:
  //设置时间为现在的系统时间ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime());//设置时间的显示格式ui->dateTimeEdit->setDisplayFormat(tr("yyyy年MM月dd日dddHH时mm分ss秒"));
  • 运行如下,还要说明,可以使用该部件的 text() 函数获取设置的值,它返回QString 类型的字符串,也可以使用dateTime()函数,它返回QDateTime 类型数据。

在这里插入图片描述

4.2 QSpinBox 和 QDoubleSpinBox

  • QSpinBox 用来设置整数,QDoubleSpinBox 用来设置浮点数,这两个部件在前边的输入对话框中已经接触过了。
  • 从部件栏中找到SpinBox和Double Spin Box,并将它们拖入到界面上。可以在属性栏中看到spinBox的属性有:后缀suffix属性,可以设置为“%”,这样就可以显示百分数了;前缀prefix属性,比如表示金钱时前面有“¥”字符;最小值 minimum属性,设置其最小值;最大值maximum属性设置其最大值;单步值 singleStep属性设置每次增加的数值,默认为1;value为现在显示的数值。而 dou-bleSpinBox又增加了一个小数位数 decimals属性,用来设置小数点后面的位数。关于这两个部件就不再过多讲述,最后提醒大家,可以在代码中使用value()函数来获取设置的数值。

在这里插入图片描述

5. QAbstractSlider

  • QAbstractSlider类用于提供区间内的一个整数值,它有一个滑块,可以定位到一个整数区间的任意值。该类是一个抽象基类,它有3个子类QScrollBar、QSlider 和QDial。其中,滚动条QScrollBar多数是用在QScrollArea类中来实现滚动区域;QSlider就是常见的音量控制或多媒体播放进度等滑块部件;QDial是一个刻度表盘部件这些部件可以参考Sliders示例程序。
  • 新建QtWidgets应用,项目名称myslider,基类选择QWidget,类名为MyWidget。完成后到设计模式,从部件栏中分别将 Dial、Horizontal Scroll Bar 和Vertical Scroll Bar、Horizontal Slider 以及Vertical Slider 等部件拖入到界面上,如下:

在这里插入图片描述

  • 先看两个 Scroll Bar 的属性:maximum属性用来设置最大值,minimum 属性用来设置最小值;singleStep属性是每步的步长,默认是1,就是按下方向键后其数值增加或者减少1;pageStep是每页的步长,默认是10,就是按下PageUp或者PageDown按键后,其数值增加或者减少10;value与sliderPosition是当前值;tracking设置是否跟踪,默认为是,就是在拖动滑块时,每移动一个刻度,都会发射valueChanged()信号,如果选择否,则只有拖动滑块释放时才发射该信号;orientation设置部件的方向,有水平和垂直两种选择;invertedAppearance属性设置滑块所在的位置,比如默认滑块开始在最左端,选中这个属性后,滑块默认就会在最右端。invertedControls设置反向控制,比如默认是向上方向键是增大,向下方向键是减小,如果选中这个属性,那么控制就会正好反过来。另外,为了使部件可以获得焦点,需要将focusPolicy设置为StrongFocus。
  • -再来看两个 Slider,它们有了自己的两个属性 tickPosition和tickInterval,前者用来设置显示刻度的位置,默认是不显示刻度;后者是设置刻度的间隔。
  • 而Dial有自己的属性wrapping,用来设置是否首尾相连,默认开始与结束是分开的;属性notchTarget 用来设置刻度之间的间隔;属性notchesVisible用来设置是否显示刻度。
  • 再往界面上拖人一个Spin Box,然后进人信号和槽编辑界面,将刻度表盘部件 dial的 sliderMoved(int)信号分别与其他各个部件的setValue(int)槽相连接。设置完成后运行程序,然后使用鼠标拖动刻度盘部件的滑块,可以看到其他所有的部件都跟着变化了。

QQ2025418-204420

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

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

相关文章

JAVA学习-多线程

线程 线程(Thread)是一个程序内部的一条执行流程。 程序中如果只有一条执行流程&#xff0c;那这个程序就是单线程的程序。 线程的常用方法及构造器&#xff1a; Thread提供的常用方法public void run() 线程的任务方法public void start() 启动线程public String getName() …

Github 2025-04-19Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2025-04-19统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Rust: 构建可靠高效软件的开源项目 创建周期:5064 天开发语言:Rust协议类型:OtherStar数量:92978 个Fork数量:12000…

OpenLayers:视图变换的方法

一、什么是视图变换&#xff1f; 视图变换就是指视图的 extent&#xff08;范围&#xff09;、center&#xff08;中心点&#xff09;、zoom&#xff08;缩放级别&#xff09;、 resolution&#xff08;分辨率&#xff09;、rotation&#xff08;旋转角&#xff09;等参数发生…

数字孪生火星探测车,星际探索可视化

运用图扑构建数字孪生火星探测车&#xff0c;高精度还原外观与内部构造。实时映射探测车在火星表面的移动、探测作业及设备状态&#xff0c;助力科研人员远程监测、分析数据&#xff0c;为火星探索任务提供可视化决策支持。

【NLP 66、实践 ⑰ 基于Agent + Prompt Engineering文章阅读】

你用什么擦干我的眼泪 莎士比亚全集 工业纸巾 还是你同样泛红的眼睛 —— 4.19 一、⭐【核心函数】定义大模型调用函数 call_large_model prompt&#xff1a;用户传入的提示词&#xff08;如 “请分析这篇作文的主题”&#xff09;&#xff0c;指导模型执行任务 client&…

黑马Java基础笔记-1

JVM&#xff0c;JDK和JRE JDK是java的开发环境 JVM虚拟机&#xff1a;Java程序运行的地方 核心类库&#xff1a;Java已经写好的东西&#xff0c;我们可以直接用。 System.out.print中的这些方法就是核心库中的所包含的 开发工具: javac&#xff08;编译工具&#xff09;、java&…

PR第一课

目录 1.新建 2.PR内部设置 3.导入素材 4.关于素材窗口 5.关于编辑窗口 6.序列的创建 7.视频、图片、音乐 7.1 带有透明通道的素材 8.导出作品 8.1 打开方法 8.2 导出时&#xff0c;需要修改的参数 1.新建 2.PR内部设置 随意点开 编辑->首选项 中的任意内容&a…

Xcode16 调整 Provisioning Profiles 目录导致证书查不到

cronet demo 使用的 ninja 打包&#xff0c;查找 Provisioning Profiles 路径是 ~/Library/MobileDevice/Provisioning Profiles&#xff0c;但 Xcode16 把该路径改为了 ~/Library/Developer/Xcode/UserData/Provisioning Profiles&#xff0c;导致在编译 cronet 的demo 时找不…

【更新完毕】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测

完整内容请看文末最后的推广群 先展示文章和代码、再给出四个问题详细的模型 基于多模型下的就业状态研究 摘要 随着全球经济一体化和信息技术的迅猛发展&#xff0c;失业问题和就业市场的匹配性问题愈加突出。为了解决这一问题&#xff0c;本文提出了一种基于统计学习和机器学…

[HOT 100] 1964. 找出到每个位置为止最长的有效障碍赛跑路线

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 1964. 找出到每个位置为止最长的有效障碍赛跑路线 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 你打算构建一些障碍赛跑路线。给你一个 下标从 0 开始 的整数数组 obst…

2025年KBS SCI1区TOP:增强天鹰算法EBAO,深度解析+性能实测

目录 1.摘要2.天鹰算法AO原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了增强二进制天鹰算法&#xff08;EBAO&#xff09;&#xff0c;针对无线传感器网络&#xff08;WSNs&#xff09;中的入侵检测系统&#xff08;IDSs&#xff09;。由于WSNs的特点是规模…

JavaScript数据类型简介

在JavaScript中&#xff0c;理解不同的数据类型是掌握这门语言的基础。数据类型决定了变量可以存储什么样的值以及这些值能够执行的操作。JavaScript支持多种数据类型&#xff0c;每种都有其特定的用途和特点。本文将详细介绍JavaScript中的主要数据类型&#xff0c;并提供一些…

性能比拼: Elixir vs Go(第二轮)

本内容是对知名性能评测博主 Anton Putra Elixir vs Go (Golang) Performance Benchmark (Round 2) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 这是第二轮关于 Elixir 和 Go 的对比测试。我收到了一份来自 Elixir 创作者的 Pull Request &#xff0c;并且我认为…

接口自动化 ——fixture allure

一.参数化实现数据驱动 上一篇介绍了参数化&#xff0c;这篇 说说用参数化实现数据驱动。在有很多测试用例的时候&#xff0c;可以将测试用例都存储在文件里&#xff0c;进行读写调用。本篇主要介绍 csv 文件和 json 文件。 1.读取 csv 文件数据 首先创建 csv 文件&#xff…

`peft`(Parameter-Efficient Fine-Tuning:高效微调)是什么

peft(Parameter-Efficient Fine-Tuning:高效微调)是什么 peft库是Hugging Face推出的用于高效参数微调的库,它能在不调整模型全部参数的情况下,以较少的可训练参数对预训练模型进行微调,从而显著降低计算资源需求和微调成本。以下从核心功能、优势、常见微调方法、使用场…

编程常见错误归类

上一篇讲了调试&#xff0c;今天通过一个举例回忆一下上一篇内容吧&#xff01; 1. 回顾&#xff1a;调试举例 在VS2022、X86、Debug的环境下&#xff0c;编译器不做任何优化的话&#xff0c;下⾯代码执⾏的结果是啥&#xff1f; #include <stdio.h> int main() {int …

在windows上交叉编译opencv供RK3588使用

环境 NDK r27、RK3588 安卓板子、Android 12 步骤操作要点1. NDK 下载选择 r27 版本&#xff0c;解压到无空格路径&#xff08;如 C:/ndk&#xff09;2. 环境变量配置添加 ANDROID_NDK_ROOT 和工具链路径到系统 PATH3. CMake 参数调整指定 ANDROID_NATIVE_API_LEVEL31、ANDRO…

浅析MySQL事务锁

在 MySQL 中,事务锁是用于确保数据一致性和并发控制的重要机制。事务锁可以帮助防止多个事务同时修改同一数据,从而避免数据不一致和脏读、不可重复读、幻读等问题。 以下是 MySQL 事务锁的关键点总结: 事务锁:用于确保数据一致性和并发控制。锁的类型: 行级锁:InnoDB,粒…

vue3 文件下载(excel/rar/zip)

安装axios npm install axios 在项目中引入 import axios from axios; 1、get接口excel文件下载 const file_key ref() const downLoadExcel (value:any) > {//file_key.value value axios({method: "get",url: "/api/da/download_excel/",//url:…

RT-Thread RTThread studio 初使用

RT-Thread Studio 下载 https://www.rt-thread.org/studio.html 安装使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 编译问题解决 问题一&#xff1a;error: unknown type name clock_t 具体的类型值是在sys/_types.h中定义的&#xff0c;需要包含sys/_types.h 这个…