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

QML键盘事件

在QML中,当有一个按键按下或释放时,会产生一个键盘事件,将其传递给获得有焦点的QML项目(讲focus属性设置为true,则获得焦点)。

按键处理的基本流程:

  1. Qt接收密钥操作并生成密钥事件。
  2. 如果 QQuickWindow 是活动窗口,则密钥事件将传递给它。
  3. 关键事件由场景传递到具有活动焦点的项目。如果没有项目具有活动焦点,则忽略关键事件。
  4. 如果具有活动焦点的 QQuickItem 接受密钥事件,则传播将停止。否则,事件将发送到项的父项,直到接受该事件或到达根项。

附加属性所有可视基元都支持Keys 附加属性进行键的处理。

信号属性击具有一个KeyEvent参数,参数名为event,通过event来处理键。

处理完事件后,可以设置event.accepted:true,防止事件在项目层次结构中向上传播

常用属性:

enable是否启动(默认true)
forwardTo:list<item>将事件转发到其他列表
priority

优先级

Keys.BeforeItem (默认)在正常项键处理之前处理键事件。如果事件被接受,它将不会传递给该项目。

Keys.AfterItem   在正常项键处理之后处理键事件。如果该项接受键事件,则不会由键附加属性处理程序处理它。

优先级处理顺序:

 Keys.BeforeItem

  1. 中指定的项目forwaTo
  2. 特定的键处理程序,例如 onReturnPressed
  3. onPressed, onRelease的处理程序
  4. 项目特定的键处理,例如文本输入键处理
  5. 父项

如果优先级为 Keys.AfterItem 则键事件处理的顺序为:

  1. 项目特定的键处理,例如文本输入键处理
  2. 中指定的项目forwardTo
  3. 特定的键处理程序,例如 onReturnPressed
  4. onPressed, onRelease的处理程序
  5. 父项

信号:

asteriskPressed* 被按下时会发出此信号
backPressed按下后退键时会发出此信号
backtabPressed当按下 Shift+Tab 组合键(后退选项卡)时,将发出此信号
callPressed按下呼叫键时会发出此信号
cancelPressed按下取消键时会发出此信号
context1Pressed按下 Context1 键时会发出此信号
context2Pressed按下 Context2 键时会发出此信号
context3Pressed按下 Context3 键时会发出此信号
context4Pressed按下 Context4 键时会发出此信号
deletePressed按下 Delete 键时会发出此信号
digit0Pressed当按下数字“0”时,会发出此信号
digit1Pressed当按下数字“1”时,会发出此信号
digit2Pressed当按下数字“2”时,会发出此信号
digit3-8
digit9Pressed当按下数字“9”时,会发出此信号
downPressed按下向下箭头时会发出此信号
enterPressed按下 Enter 键时会发出此信号
escapePressed按下 Esc 键时会发出此信号
flipPressed按下翻转键时会发出此信号。
hangupPressed按下挂断键时会发出此信号
leftPressed按下向左箭头时会发出此信号
menuPressed按下菜单键时会发出此信号
noPressed按下 No 键时发出此信号
pressed按下某个键时会发出此信号
released释放密钥后会发出此信号
returnPressed按下回车键时会发出此信号
rightPressed按下向右箭头时发出此信号
selectPressed按下选择键时会发出此信号
shortcutOverride当按下可能用作快捷方式的键时
spacePressed按下空格键时会发出此信号
tabPressed按下 Tab 键时会发出此信号
upPressed按下向上箭头时会发出此信号
volumeDownPressed按下音量调低键时会发出此信号
volumeUpPressed按下音量调高键时会发出此信号
yesPressed按下“是”键时发出此信号

按下任意键,图像向右下角移动:

Rectangle{id:rect1width: 100;height: 100x:0;y:0color: "red"focus: true//获取焦点Keys.onPressed: {//按下任意键时rect1.x+=50//x的位置+50rect1.y+=50//y的位置+50event.accepted=true//设置为已处理}}

按下不同的键执行不同的命令:

按下向上键,向上移动10

按下向下键,向下移动10

按下向左键,向左移动10

按下向右键,向右移动10

Rectangle{id:rect1width: 100;height: 100x:100;y:100color: "red"focus: true//获取焦点Keys.onPressed: {//按下任意键时if(event.key==Qt.Key_Left)rect1.x-=10;else if(event.key==Qt.Key_Right)rect1.x+=10else if(event.key==Qt.Key_Up)rect1.y-=10else if(event.key==Qt.Key_Down)rect1.y+=10else{}event.accepted=true}}

KeyNavigation(按键导航)

基于键的用户界面通常允许使用箭头键在可聚焦项目之间导航。KeyNavigation 附加属性通过提供一种方便的方法来指定在按下箭头或 Tab 键时应获得焦点的项,从而实现此行为。

常见的属性:

backtab此属性保存按下 Shift+Tab 组合键(后退表)时要为其分配焦点的项目
down 此属性保存按下向下光标键时要为其分配焦点的项
left 此属性保存按下左光标键时要为其分配焦点的项目
right 

此属性保存按下右光标键时要为其分配焦点的项目。

tab

此属性保存按下 Tab 键时要为其分配焦点的项。

up此属性保存按下向上光标键时要为其分配焦点的项

使用Tab键切换:

Row{x:50;y:50spacing: 25Rectangle{id:rect1width: 100;height: 100radius: 10KeyNavigation.tab: rect2//按tab键,跳转到rect2focus: true //默认rect1获取焦点color:focus?"red":"lightgray"//获取焦点时为红色,没获取焦点时为灰色scale: focus?1:0.8//当没获取焦点时大小为0.8倍Text{anchors.centerIn: parentcolor: parent.focus?"black":"gray"font.pointSize: 20text:"矩形1"}}Rectangle{id:rect2width: 100;height: 100radius: 10KeyNavigation.tab: rect3//按tab键,跳转到rect3color:focus?"green":"lightgray"//获取焦点时为绿色,没获取焦点时为灰色scale: focus?1:0.8//当没获取焦点时大小为0.8倍Text{anchors.centerIn: parentcolor: parent.focus?"black":"gray"font.pointSize: 20text:"矩形2"}}Rectangle{id:rect3width: 100;height: 100radius: 10KeyNavigation.tab: rect1//按tab键,跳转到rect1color:focus?"blue":"lightgray"//获取焦点时为蓝色,没获取焦点时为灰色scale: focus?1:0.8//当没获取焦点时大小为0.8倍Text{anchors.centerIn: parentcolor: parent.focus?"black":"gray"font.pointSize: 20text:"矩形3"}}}

 

Shortcut (快捷键)

快捷键类型提供了一种处理键盘快捷键的方法。快捷键可以设置为标准键盘快捷键之一,也可以使用包含激活快捷键所需的最多四次按键序列的字符串来描述。

属性:

sequence 此属性保存快捷方式的键序列。键序列可以设置为标准键盘快捷键之一,也可以使用包含激活快捷键所需的最多四次按键序列的字符串来描述。
sequences:list<>此属性包含快捷方式的多个键序列
enable是否启动该功能
portableText 此属性以“可移植”格式的字符串形式提供快捷方式的键序列
nativeText 此属性将快捷方式的键序列作为特定于平台的字符串提供。这意味着它将被翻译显示
autoRepeat此属性保存快捷方式是否可以自动重复(默认true)

context:enumeration(上下文)

Qt.WindowShortcut当快捷方式的父项位于活动的顶级窗口中时,快捷方式处于活动状态(默认)
Qt.ApplicationShortcut当应用程序的某个窗口处于活动状态时,快捷方式处于活动状态

信号:

activated激活时
activatedAmbiguously当快捷方式被模糊地激活时,会发出此信号,这意味着它与多个快捷方式的开头匹配

快捷键创建格式: 

  1. sequence: "Ctrl+E"               按下Ctrl +E
  2. sequence:"Ctrl+E,Ctrl+W"   先按下Ctrl+E 然后再按下Ctrl+W
  3. sequences:["Ctrl+E","Ctrl+W"]   按下Ctrl+E 或 Ctrl+W

简单的使用:

Rectangle{Shortcut{sequence: "Ctrl+E"onActivated:console.log("已按下Ctrl+E")}}

Rectangle{Shortcut{sequence: "Ctrl+E,Ctrl+W"onActivated:console.log("已按下Ctrl+E+Ctrl+W")}}

 需要先按下Ctrl+E 再按下Ctrl+W才能触发

 

 Rectangle{Shortcut{sequences: ["Ctrl+E","Ctrl+W"]onActivated:console.log("已按下Ctrl+E或Ctrl+W")}}

按下Ctrl+E或按下Ctrl+W

  activated和activatedAmbiguously的区别

  • activated  只能由于单个Shotcut的触发
  • activatedAmbiguously  可以用于快捷键被多个Shotcut触发

当快捷键被多个Shotcut触发时,activated不触发 

Rectangle{Shortcut{id:s1sequence:"Ctrl+E"onActivated:console.log("s1已按下Ctrl+E")}Shortcut{id:s2sequence:"Ctrl+E"onActivated:console.log("s2已按下Ctrl+E")}}

 

 当快捷键被多个Shotcut触发时,activatedAmbiguously触发 

触发规则:

  1. 优先触发后面创建的Shortcut对象
  2. 一次只触发一个对象
Rectangle{Shortcut{id:s1sequence:"Ctrl+E"onActivatedAmbiguously:console.log("s1已按下Ctrl+E")}Shortcut{id:s2sequence:"Ctrl+E"onActivatedAmbiguously:console.log("s2已按下Ctrl+E")}Shortcut{id:s3sequence:"Ctrl+E"onActivatedAmbiguously:console.log("s3已按下Ctrl+E")}}

按下3次Ctrl+E

 

 Keys中的快捷键覆盖:

使用    onShortcutOverride

当没有快捷键覆盖时:

Rectangle{id:rect1focus:trueKeys.onEscapePressed:{console.log("Keys.Escape")}}Shortcut{sequence: "Escape"onActivated: {console.log("Shortcut.Escape")}}

 使用快捷键覆盖:

Rectangle{id:rect1focus:trueKeys.onShortcutOverride: event.accepted=(event.key==Qt.Key_Escape)Keys.onEscapePressed:{console.log("Keys.Escape")}}Shortcut{sequence: "Escape"onActivated: {console.log("Shortcut.Escape")}}

 控件与焦点:

判断是否为活动焦点:

使用activeFocus来判断是否获取焦点

当有多个控件需要焦点时的处理:(Qt 5.9.9版本下)

子控件:文件名为:Mywidget.qml

import QtQuick 2.9
Rectangle{id:rect1color: "lightsteelblue"; width: 175; height: 25; radius: 10; antialiasing: trueText { id: label1; anchors.centerIn: parent}focus: trueKeys.onPressed: {if (event.key == Qt.Key_A)label1.text = 'Key A was pressed'}
}

主控件: 在Window中添加

Rectangle{width: 300;height:300;x:100;y:100;color: "lightBlue"focus: true//设置焦点Column{spacing:25Mywidget{  }Mywidget{  }}}

运行的话子控件不会接收焦点

 在第一个子控件中添加焦点

Rectangle{width: 300;height:300;x:100;y:100;color: "lightBlue"Column{spacing:25Mywidget{ focus: true }Mywidget{ }}}

运行结果:第一个控件响应键盘事件

 

第二个子控件中添加焦点 :

Rectangle{width: 300;height:300;x:100;y:100;color: "lightBlue"Column{spacing:25Mywidget{  }Mywidget{ focus: true}}}

运行结果为:还是第一个子控件获取键盘事件

 

 当两个子控件都设置焦点:

Rectangle{width: 300;height:300;x:100;y:100;color: "lightBlue"Column{spacing:25Mywidget{ focus: true }Mywidget{ focus: true }}}

运行结果还是第一个子控件获取键盘事件 

由此可见:当有多个组件设置了焦点时,最终只有一种类型可以具有键盘焦点,系统必需决定哪种类型获取焦点。此问题是由于可见性造成的。组件希望具有焦点,但在导入或重用是无法控制焦点。同样,组件无法知道其导入的组件是否正在请求焦点。

为了解决这个问题QML引入了焦点范围的概念:

 

FocusScope(焦点范围) 

  • 在每个焦点范围内,一个对象可能已设置为 。如果设置了多个 Item 属性,则要设置的最后一个类型将具有焦点,而其他类型将未设置,类似于没有焦点范围的情况。
  • 当焦点范围收到活动焦点时,包含的已设置类型(如果有)也会获取活动焦点。如果此类型也是焦点范围,则代理行为将继续。焦点范围和子焦点项都将设置属性。
  •  FocusScope 类型不是视觉对象类型,因此需要向 FocusScope 的父项公开其子项的属性

例子:实现使用鼠标点击切换焦点

子控件:

FocusScope {id: scope//公开子项的属性property alias color: rectangle.colorx: rectangle.x; y: rectangle.ywidth: rectangle.width; height: rectangle.heightRectangle {id: rectangleanchors.centerIn: parentcolor: "lightsteelblue"; width: 175; height: 25; radius: 10; antialiasing: trueText { id: label; anchors.centerIn: parent }focus: trueKeys.onPressed: {if (event.key == Qt.Key_A)label.text = 'Key A was pressed'}//鼠标点击获取焦点MouseArea { anchors.fill: parent; onClicked: { scope.focus = true } }}
}

主控件:

Rectangle{width: 300;height:300;x:100;y:100;color: "lightBlue"Column{spacing:25Mywidget{focus: true }Mywidget{  }}}

运行结果:

1.按下A键

2.鼠标点击第二个子控件,再按下A键 

 

使用FocusScope设计一个登录界面。

标签和输入框的设计:

import QtQuick 2.9
FocusScope{property alias label:label.textRow{spacing: 10Text{id:labeltext:"标签"}Rectangle{width:100height: 20color: "white"border.color: "gray"TextInput{id:inputanchors.fill: parent//充满整个矩形anchors.margins: 4  //设置边距focus: true;//获取焦点}}}
}

主窗口显示:

Rectangle{anchors.fill: parentproperty alias mouseArea: mouseAreafocus: truecolor: "lightgray"MouseArea{id:mouseAreaanchors.fill:parent//充满整个矩形}Mywidget{id:widget1;x:100;y:100label:"账号"//设置标签KeyNavigation.tab:widget2}Mywidget{x:100y:150id:widget2;label: "密码"//设置标签KeyNavigation.tab:widget1}}

运行效果:

 

 参考文档:

Keyboard Focus in Qt Quick | Qt Quick 5.15.12

Keys QML Type | Qt Quick 5.15.12

相关文章:

QML键盘事件

在QML中&#xff0c;当有一个按键按下或释放时&#xff0c;会产生一个键盘事件&#xff0c;将其传递给获得有焦点的QML项目&#xff08;讲focus属性设置为true&#xff0c;则获得焦点&#xff09;。 按键处理的基本流程&#xff1a; Qt接收密钥操作并生成密钥事件。如果 QQuic…...

跨域问题怎么解决

解决跨域&#xff0c;原因&#xff1a;域名不同&#xff0c;域名相同端口不同&#xff1b;二级域名不同 什么是跨域&#xff1f; 就是两个项目之间通讯&#xff0c;如果访问的域名与ajax访问的地址不一致情况&#xff0c;默认情况浏览器有一个安全机制。 postman不一定能测试…...

微服务网关Gateway和Zuul的区别

spring-cloud-Gateway是spring-cloud的一个子项目。而zuul则是netflix公司的项目&#xff0c;只是spring将zuul集成在spring-cloud中使用而已。 因为zuul2.0连续跳票和zuul1的性能表现不是很理想&#xff0c;所以催生了spring团队开发了Gateway项目。 Zuul&#xff1a; 使用的…...

专访华西二院吴邦华:隐私计算+AI全栈技术,构筑智慧医院建设的坚实数据底座|爱分析访谈

从IT时代步入DT时代&#xff0c;医疗大数据成为智慧医院建设的重要驱动力。经过多年信息化系统建设&#xff0c;很多医院已经积累了大量的医疗数据资源&#xff0c;但由于各业务系统间数据孤岛化严重、系统架构落后、数据缺乏深度治理等问题存在&#xff0c;导致现有数据深度及…...

《C++ Primer Plus》第18章:探讨 C++ 新标准(6)

可变参数模板 可变参数模板&#xff08;variadic template&#xff09;让您能够创建这样的模板函数和模板类&#xff0c;即可接收可变数量的参数。这里介绍可变参数模板函数。例如&#xff0c;假设要编写一个函数&#xff0c;它可接受任意数量的参数&#xff0c;参数的类型只需…...

.Net Core中使用是SQL Server的邮件发送功能

.Net Core中使用是sqlserver的邮件发送功能准备需求启用SQL Server的电子邮件功能检查和测试在.net Core中调用在sqlsrver的管理中有一个数据库邮件功能,再此可以使用sqlserver来自动发送一些邮件,但是有一些需要插入附件的邮件则需要使用程序代码来解决,下面就是使用C#来调用s…...

Nginx优化服务和防盗链

Nginx优化服务和防盗链一、长连接1、修改主配置文件2、测试3、在主配置文件添加4、验证二、Nginx第三方模块1、开源的echo模块2、查看是否成功3、加echo模块步骤4、网页测试验证三、搭建虚拟主机1、编译安装好nginx后&#xff0c;对主配置文件进行修改2、创建文件3、验证四、防…...

B树与B+树

认识了解MySQL中的B树B树引出什么是B树什么是B树B树的优点B树引出 在MySQL中,如果我们设置了主键, 那么对于该列表中的数据就有了一个索引,插入表中数据的主键值不能重复,而且不能为空. 那当我们插入数据的时候, 它是如何通过索引来判断主键值是否重复的呢? 我们想到它肯定是…...

QEMU网络配置

文章目录1. 前言2. 测试环境3. 配置步骤3.1 host 配置3.1.1 检查 host 对 TUN/TAP 和 网桥的支持情况3.1.2 网桥一端的建立&#xff1a;创建网桥设备&#xff0c;并添加 host 网卡到网桥3.1.3 网桥另一端的建立&#xff1a;TUN/TAP 配置3.2 guest 端的配置4. 参考链接1. 前言 …...

windows安装tomcat

这里写自定义目录标题tomcat官网下载安装包并解压环境变量配置启动tomcat访问http://localhost:8080/修复启动出现乱码问题tomcat官网下载安装包并解压 环境变量配置 系统环境变量新增&#xff1a; 变量名&#xff1a;CATALINA_HOME 变量值&#xff1a;tomcat的安装目录 编辑…...

刷题记录:牛客NC23051华华和月月种树 树链剖分+离线加点

传送门:牛客 题目描述: 华华看书了解到&#xff0c;一起玩养成类的游戏有助于两人培养感情。所以他决定和月月一起种一棵树。因为华华现在也是信息学高手了&#xff0c;所以他们种的树是信息学意义下的。 华华和月月一起维护了一棵动态有根树&#xff0c;每个点有一个权值。刚…...

年薪20W软件测试工程师必备的6大技能(建议收藏)

软件测试 随着软件开发行业的日益发展&#xff0c;岗位需求量和行业薪资都不断增长&#xff0c;想要入行的人也是越来越多&#xff0c;但不知道从哪里下手&#xff0c;今天&#xff0c;就给大家分享一下&#xff0c;软件测试行业都有哪些必会的方法和技术知识点&#xff0c;作…...

【存储】RAID2.0+、多路径技术、磁盘可靠性技术

RAID2.0RAID 2.0技术RAID技术发展RAID 2.0软件逻辑对象RAID 2.0基本原理硬盘域Storage Pool & TierDisk Group&#xff08;DG&#xff09;LD&#xff08;逻辑磁盘&#xff09;Chunk&#xff08;CK&#xff09;Chunk Group&#xff08;CKG&#xff09;ExtentGrainVolume &am…...

Vue 2

文章目录1. 简介2. 第一个Vue程序3. 指令3.1 判断循环3.2 操作属性3.3 绑定事件3.4 表单中数据双向绑定3.5 其他内置指令3.6 自定义指令4. 组件4.1 全局注册4.2 局部注册4.3 组件通讯4.4 单文件组件5. 组件插槽5.1 单个插槽5.2 具名插槽5.3 作用域插槽6. 内置组件6.1 component…...

Ubuntu 安装 Docker Engine

【参考】Install Docker Engine on Ubuntu | Docker Documentation: https://docs.docker.com/engine/install/ubuntu/ 【参考】Docker CE 镜像源站-阿里云开发者社区 https://developer.aliyun.com/article/110806 【规范】模仿 Docker 文档&#xff0c;Ubuntu, Docker 首字母…...

SpringBoot入门 - 添加内存数据库H2

上文我们展示了通过学习经典的MVC分包结构展示了一个用户的增删查改项目&#xff0c;但是我们没有接入数据库&#xff1b;本文将在上文的基础上&#xff0c;增加一个H2内存数据库&#xff0c;并且通过Spring 提供的数据访问包JPA进行数据查询。准备知识点在介绍通过Spring JPA接…...

高质量数字化转型创新发展大会暨中国信通院“铸基计划”年度会议成功召开

2023年3月3日&#xff0c;由中国信通院主办的高质量数字化转型创新发展大会暨中国信通院“铸基计划”年度会议在北京成功召开。本次大会深度展示了中国信通院在数字化领域的工作成果&#xff0c;并全面展望了2023年行业的数字化发展趋势。同时&#xff0c;大会发布了中国信通院…...

2023年如何通过软考初级程序员?

初级的考试难度不大&#xff0c;稍微有点编程基础&#xff0c;认真备考应该没什么大问题。 先清楚大纲&#xff1a; 高效备考&#xff01;理清考点&#xff0c;针对性复习 科目一&#xff1a;综合知识 75道单项选择题&#xff0c;1题1分&#xff0c;时长150分钟&#xff1b;…...

视频自动播放的实现与问题解决

一、前言 页面加载一个视频并且自动播放,这个需求看起来非常简单,实现起来感觉也非常简单;但是,实际做起来还是有几处容易产生问题的地方卡住进度。本文讨论基于Vue3的项目在实现页面加载视频后的自动播放遇到的几个问题。 二、页面实现 页面实现非常简单。在页面上放置一个…...

ThreadLocal 理解及面试

一、ThreadLocal 引用关系 图解关系说明&#xff1a; 每个线程拥有自己的 ThreadLocalMap 属性&#xff1b;ThreadLocalMap 的存储结构为 Entry[] 数组&#xff1b;Entry的Key是ThreadLocal类型且弱引用指向ThreadLocal对象&#xff0c;Value是我们自己定义的泛型值对象&#…...

巾帼绽芬芳 一起向未来(中篇)

编者按&#xff1a;为了隆重纪念纪念“三八”国际妇女节113周年&#xff0c;快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇&#xff08;节日简介、节日发展和节日意义&#xff09;、中篇&#xff08;节日活动宗旨和世界各国庆祝方式&#xff09;和下篇&…...

Qt学习2-Qt Creator新建项目小tips(哔站视频学习记录)

放送两个小tips: 1、MinGW和MSVC的区别 QT学习笔记&#xff08;二&#xff09;&#xff1a;QT MinGW 和 MSVC 编译方式_Leon_Chan0的博客-CSDN博客 2、如何安装QT对应版本的MSVC (1)问题描述&#xff1a;Qt5.12.8支持MSVC2015和MSVC2017&#xff0c;但是系统安装的是Visual…...

React-高阶组件

认识高级组件 高阶函数的维基百科定义:至少满足以下条件之一 1、接受一个或多个函数作为输入; 2、输出一个函数; JavaScript中比较常见的 filter、map、reduce 都是高阶函数 那么说明是高阶组件呢? 高阶组件的英文是 Higher-Order Components&#xff0c;简称为 HOC;官方的…...

python学习——【第一弹】

前言 Python是一种跨平台的计算机程序设计语言&#xff0c;是ABC语言的替代品&#xff0c;属于面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 从这篇…...

数据结构——链表讲解(1)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年3月3日 内容&#xff1a;数据结构链表讲解 目录 前言&#xff1a; 链表的概念&#xff1a; 1.为什么要有链表&#xff1a; 2.链表的运行原理&#xff1a; 3.链表的形态多少&#xff1a; 4.单链表的代码书写&#xff1…...

docker部署MySQL主从服务

一.主从同步流程关于MySQL主从复制主要同步的是binlog日志&#xff0c;涉及到三个线程&#xff0c;一个运行在主节点&#xff08;log dump thread&#xff09;&#xff0c;其余两个(I/O thread, SQL thread)运行在从节点&#xff0c;如下图所示:当主库数据发生变更时&#xff0…...

儿童护目台灯哪种好用?几款真的保护视力的台灯品牌推荐

儿童眼睛还未发育完全&#xff0c;眼睛比较脆弱&#xff0c;但是现在的小孩子学习任务也比较繁重&#xff0c;经常晚上看书写字&#xff0c;所以选择合适的护眼台灯来保护眼睛很重要。 选择儿童护目台灯需要注意以下几个方面&#xff1a; &#xff08;一&#xff09;色温和亮…...

游戏逆向基础之OD找CALL实践

在逆向中除了分析数据之外&#xff0c;另外一个重要的工作就是找算法&#xff0c;找CALL 例如各种功能函数&#xff1a;攻击CALL,走路CALL,喊话CALL等等 以及加密解密等算法需要我们先锁定其位置&#xff0c;然后进行逆向分析。 最常见方法一 API函数下断&#xff0c;例如send …...

File 文件操作

File 文件操作&#xff1a; 一、常用方法&#xff1a; 方法类型描述public File(String pathname&#xff09;构造给定一个要操作文件的完整路径public File(File parent, String child)构造给定要操作文件的父路径和子文件名称public boolean createNewFile() throws IOExce…...

QT基础(18)- QAbstractSocket

QT基础&#xff08;18&#xff09;- QAbstractSocket1 创建简单的客户端2 QAbstractSocket2.1 简介2.2 枚举2.2.1 BingFlag2.2.2 NetworkLayerProtocol2.2.3 PauseMode2.2.4 SocketError2.2.5 SocketOption2.2.6 SocketType2.2.7 SocketState2.3 公有函数2.3.1 构造函数2.3.2 a…...

做类似淘宝的网站设计需要什么/网络整合营销推广

本文主要通过实现Thread 类来展现两种编程风格的不同点。 很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;缺一不可。通常“基于对象”是使用对象&#xff0c;但是无法利用现有的对…...

网站建设需要什么技能/南宁百度seo价格

spring cloud开发工程属于分布式服务开发&#xff0c;idea顶层概念是project&#xff0c;而我们顶层只需要一个目录&#xff0c;如果使用idea创建工程&#xff0c;会默认生成一个同名module&#xff0c;不是我们想要的&#xff0c;所以我们手动建立文件夹&#xff0c;然后打开。…...

阿里巴巴网站怎么做/网络营销策划方案模板范文

目录前言&#x1f697;1.寄存器简介&#x1f697;2.从寄存器的角度分析C代码&#x1f697;3.从寄存器的角度分析函数调用过程&#x1f697;4.问题集锦&#x1f697;5.彩蛋&#xff1a;Compiler Explore使用简介准备写这么一个系列文章&#xff1a;从寄存器的角度来分析函数调用…...

太仓市住房和城乡建设局规网站/今天疫情最新消息

GBR——Gradient boosting regression——梯度提升回归模型 目 录 1 Boosting 集成学习&#xff0c;Boosting与Bagging的区别 2 Gradient Boosting算法 算法思想&#xff0c;算法实现&#xff0c;残差与负梯度 3 终极组合GBR 1 Boosting Boosting是一种机器学习算法&#x…...

如何制作一个网站h5/免费b站推广网址有哪些

...

球赛投注网站开发/湘潭seo优化

在一个BLOG上看到的,一段挺好的话&#xff0c;适合于做团队领导者的人记得真心诚意&#xff0c;以情感人&#xff1b;推心置腹&#xff0c;以诚待人开诚布公&#xff0c;以理服人&#xff1b;言行一致&#xff0c;以信取人令行禁止&#xff0c;依法治人&#xff1b;设身处地&am…...