【Qt】控件的核心属性

1 🍑控件概述🍑

Widget 是 Qt 中的核⼼概念. 英⽂原义是 “⼩部件”, 我们此处也把它翻译为 “控件” .控件是构成⼀个图形化界⾯的基本要素。

Qt 作为⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件。这⼀点在 Qt Designer 中就可以看到端倪,并且 Qt 也提供了 “⾃定义控件” 的能⼒, 可以让程序猿在现有控件不能满⾜需求的时候, 对现有控件做出扩展, 或者⼿搓出新的控件。


2 🍑QWidget 核心属性🍑

在 Qt 中, 使⽤ QWidget 类表⽰ “控件”。像按钮、视图、输⼊框、滚动条等具体的控件类, 都是继承⾃QWidget
可以说, QWidget 中就包含了 Qt 整个控件体系中通⽤的部分,在 Qt Designer 中, 随便拖⼀个控件过来, 选中该控件, 即可在右下⽅看到 QWidget 中的属性。

这些属性既可以通过 QtDesigner 会直接修改, 也可以通过代码的⽅式修改。

2.1 🍎核心属性概览🍎

下列表格列出了 QWidget 中的属性及其作⽤:

属性作⽤
enabled设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤
geometry位置和尺⼨,包含 x, y, width, height 四个部分。其中坐标是以⽗元素为参考进⾏设置的。
windowTitle设置 widget 标题
windowIcon设置 widget 图标
windowOpacity设置 widget 透明度
cursor⿏标悬停时显⽰的图标形状,是普通箭头,、还是沙漏、还是⼗字等形状,在 Qt Designer 界⾯中可以清楚看到可选项。
font字体相关属性,涉及到字体家族、字体⼤⼩、粗体、斜体、下划线等等样式。
toolTip⿏标悬停在 widget 上会在状态栏中显⽰的提⽰信息。
toolTipDuringtoolTip 显⽰的持续时间。
statusTipWidget 状态发⽣改变时显⽰的提⽰信息(⽐如按钮被按下等)。
whatsThis⿏标悬停并按下 alt+F1 时, 显⽰的帮助信息(显⽰在⼀个弹出的窗⼝中)。
styleSheet允许使⽤ CSS 来设置 widget 中的样式,Qt 中⽀持的样式⾮常丰富, 对于前端开发⼈员上⼿是⾮常友好的。
focusPolicy该 widget 如何获取到焦点:Qt::NoFocus:控件不参与焦点管理,即⽆法通过键盘或⿏标获取焦点;Qt::TabFocus:控件可以通过Tab键获得焦点;Qt::ClickFocus:控件可以通过⿏标点击获得焦点;Qt::StrongFocus:控件可以通过键盘和⿏标获得焦点;Qt::WheelFocus:控件可以通过⿏标滚轮获得焦点(在某些平台或样式中可能不可⽤)。
contextMenuPolicy上下⽂菜单的显⽰策略:Qt::DefaultContextMenu:默认的上下⽂菜单策略,⽤⼾可以通过⿏标右键或键盘快捷键触发上下⽂菜单;Qt::NoContextMenu:禁⽤上下⽂菜单,即使⽤⼾点击⿏标右键也不会显⽰菜单;Qt::PreventContextMenu:防⽌控件显⽰上下⽂菜单,即使⽤⼾点击⿏标右键也不会显⽰菜单;Qt::ActionsContextMenu:将上下⽂菜单替换为控件的“动作”菜单,⽤⼾可以通过⿏标右键或键盘快捷键触发这个菜单,Qt::CustomContextMenu:使⽤⾃定义的上下⽂菜单,⽤⼾可以通过⿏标右键或键盘快捷键触发这个菜单。
locale设置语⾔和国家地区。
acceptDrops该部件是否接受拖放操作。如果设置为true,那么该部件就可以接收来⾃其他部件的拖放操作。当⼀个部件被拖放到该部件上时,该部件会接收到相应的拖放事件(如dropEvent)。如果设置为false,那么该部件将不会接收任何拖放操作。
minimumSize控件的最⼩尺⼨. 包含最⼩宽度和最⼩⾼度
maximumSize控件的最⼤尺⼨. 包含最⼤宽度和最⼤⾼度
sizePolicy尺⼨策略,设置控件在布局管理器中的缩放⽅式
windowModality指定窗⼝是否具有 “模态” ⾏为
sizeIncrement拖动窗⼝⼤⼩时的增量单位
baseSize窗⼝的基础⼤⼩, ⽤来搭配 sizeIncrement 调整组件尺⼨是计算组件应该调整到的合适的值。
palette调⾊板. 可以设置 widget 的颜⾊⻛格
mouseTracking是否要跟踪⿏标移动事件。如果设为 true, 表⽰需要跟踪, 则⿏标划过的时候该 widget 就能持续收到⿏标移动事件,如果设为 false, 表⽰不需要跟踪, 则⿏标划过的时候 widget 不会收到⿏标移动事件, 只能收到⿏标按下或者释放的事件。
tabletTracking是否跟踪触摸屏的移动事件,类似于 mouseTracking . Qt 5.9 中引⼊的新属性。
layoutDirection布局⽅向:Qt::LeftToRight:⽂本从左到右排列,也是默认值;Qt::RightToLeft:⽂本从右到左排列;Qt::GlobalAtomics:部件的布局⽅向由全局原⼦性决定(PS 这个翻译其实有点尴尬,其实就是根据应⽤程序中的其他 widget 布局⽅向确定的)
autoFillBackground是否⾃动填充背景颜⾊
windowFilePath能够把 widget 和⼀个本地⽂件路径关联起来. PS: 其实作⽤不⼤
accessibleName设置 widget 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到
accessibleDescription设置 widget 的详细描述. 作⽤同 accessibleName
inputMethodHints针对输⼊框有效, ⽤来提⽰⽤⼾当前能输⼊的合法数据的格式. ⽐如只能输⼊数字, 只能输⼊⽇期等。

接下来我们会介绍其中⼀些⽐较重要⽐较常⽤的属性。

2.2 🍎enabled🍎

API说明
isEnabled()获取到控件的可⽤状态
setEnabled设置控件是否可使⽤,true 表⽰可⽤, false 表⽰禁⽤

🎨 所谓 “禁⽤” 指的是该控件不能接收任何⽤⼾的输⼊事件, 并且外观上往往是灰⾊的,如果⼀个 widget 被禁⽤, 则该 widget 的⼦元素也被禁⽤。

代码⽰例: 通过按钮2 切换按钮1 的禁⽤状态:
在这里插入图片描述

2.3 🍎geometry🍎

位置和尺⼨,其实是四个属性的统称:

  • x 横坐标
  • y 纵坐标
  • width 宽度
  • height ⾼度

在这里插入图片描述
但是实际开发中, 我们并不会直接使⽤这⼏个属性, ⽽是通过⼀系列封装的⽅法来获取/修改:

API说明
geometry()获取到控件的位置和尺⼨,返回结果是⼀个 QRect, 包含了 x、y、width、height,其中 x, y 是左上⻆的坐标
setGeometry(QRect)设置控件的位置和尺⼨,可以直接设置⼀个 QRect, 也可以分四个属性单独设置
setGeometry(int x, int y, int width, int height)设置控件的位置和尺⼨,可以直接设置⼀个 QRect, 也可以分四个属性单独设置

我们来试试:
在这里插入图片描述运⾏程序可以看到, 按下下⽅的四个按钮, 就会控制 target 的左上⻆的位置. 对应的按钮整个尺⼨也会发⽣改变。

上述代码中我们是直接设置的 QRect 中的 x, y ,实际上 QRect 内部是存储了左上和右下两个点的坐标, 再通过这两个点的坐标差值计算⻓宽,单纯修改左上坐标就会引起整个矩形的⻓宽发⽣改变。

🏝 window frame 的影响

如果 widget 作为⼀个窗⼝ (带有标题栏, 最⼩化, 最⼤化, 关闭按钮), 那么在计算尺⼨和坐标的时候就有两种算法。包含 window frame 和 不包含 window frame。其中 x(), y(), frameGeometry(), pos(), move() 都是按照包含 window frame 的⽅式来计算的。其中 geometry(), width(), height(), rect(), size() 则是按照不包含 window frame 的⽅式来计算的,当然, 如果⼀个不是作为窗⼝的 widget , 上述两类⽅式得到的结果是⼀致的。

在这里插入图片描述
相关 API:

API说明
x()获取横坐标,计算时包含 window frame
y()获取纵坐标,计算时包含 window frame
pos()返回 QPoint 对象, ⾥⾯包含 x(), y(), setX(), setY() 等⽅法,计算时包含 window frame
frameSize()返回 QSize 对象, ⾥⾯包含 width(), height(), setWidth(), setHeight() 等⽅法,计算时包含 window frame
frameGeometry()返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size,计算时包含 window frame 对象
width()获取宽度,计算时不包含 window frame
height()获取⾼度,计算时不包含 window frame
size()返回 QSize 对象, ⾥⾯包含 width(), height(), setWidth(), setHeight() 等⽅法,计算时不包含 window frame
rect()返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取并设置 x,y, width, size,计算时不包含 window frame 对象
geometry()返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size,计算时不包含 window frame 对象
setGeometry()直接设置窗⼝的位置和尺⼨. 可以设置 x, y, width, height, 或者 QRect 对象,计算时不包含 window frame 对象

我们写代码来感受一下他们的区别:
在这里插入图片描述

当执行时:
在这里插入图片描述
发现第一次执行结果是相同的,而第二次的执行结果是不同的。这是为什么呢?

在构造⽅法中,Widget 刚刚创建出来, 还没有加⼊到对象树中,此时也就不具备 Window frame,在按钮的 slot 函数中, 由于⽤⼾点击的时候, 对象树已经构造好了, 此时 Widget 已经具备了Window frame, 因此在位置和尺⼨上均出现了差异。如果把上述代码修改成打印 pushButtongeometryframeGeometry , 结果就是完全相同的, 因为 pushButton 并⾮是⼀个窗⼝。

2.4 🍎windowTitle🍎

API说明
windowTitle()获取到控件的窗⼝标题
setWindowTitle(const QString& title)设置控件的窗⼝标题

注意! 上述设置操作针对不同的 widget 可能会有不同的⾏为,如果是顶层 widget (独⽴窗⼝), 这个操作才会有效。

2.5 🍎windowIcon🍎

API说明
windowIcon()获取到控件的窗⼝图标. 返回 QIcon 对象
setWindowIcon(const QIcon& icon)设置控件的窗⼝图标

🎹 同 windowTitle, 上述操作仅针对顶层 widget 有效

实际开发中, 我们⼀般不会在代码中通过绝对路径引⼊图⽚. 因为我们⽆法保证程序发布后, ⽤⼾的电脑上也有同样的路径。如果使⽤相对路径, 则需要确保代码中的相对路径写法和图⽚实际所在的路径匹配 (⽐如代码中写作 “./image/rose.jpg”, 就需要在当前⼯作⽬录中创建 image ⽬录, 并把 rose.jpg 放进去)

Qt 使⽤ qrc 机制更⽅便的来管理项⽬依赖的静态资源。

qrc ⽂件是⼀种XML格式的资源配置⽂件, 它⽤XML记录硬盘上的⽂件和对应的随意指定的资源名称。应⽤程序通过资源名称来访问这些资源。在Qt开发中, 可以通过将资源⽂件添加到项⽬中来⽅便地访问和管理这些资源. 这些资源⽂件可以位于qrc⽂件所在⽬录的同级或其⼦⽬录下。

在构建程序的过程中, Qt 会把资源⽂件的⼆进制数据转成 cpp 代码, 编译到 exe 中,从⽽使依赖的资源变得 “路径⽆关”。这种资源管理机制并⾮ Qt 独有, 很多开发框架都有类似的机制。例如 Android 的 Resources和 AssetManager 也是类似的效果。

接下来我们使用QtCreator来创建一个qrc ⽂件:

  • 1️⃣右键项⽬, 创建⼀个 Qt Resource File (qrc ⽂件), ⽂件名随意起(不要带中⽂)
    在这里插入图片描述

  • 2️⃣ 在 qrc 编辑器中, 添加前缀
    在这里插入图片描述
    此处我们前缀设置成 / 即可,所谓的前缀, 可以理解成 “⽬录” ,这个前缀决定了后续我们如何在代码中访问资源。

  • 3️⃣在 资源编辑器 中, 点击 add Files 添加资源⽂件,此处我们需要添加的是 rabbit.png
    在这里插入图片描述
    添加完毕后, 可以在 资源编辑器 中看到添加好的⽂件:
    在这里插入图片描述

  • 4️⃣在代码中使⽤ rose.jpg
    在这里插入图片描述

注意上述路径的访问规则:

  • 使⽤ : 作为开头, 表⽰从 qrc 中读取资源;
  • / 是上⾯配置的前缀;
  • rabbit.png 是资源的名称;

需要确保代码中编写的路径和添加到 qrc 中资源的路径匹配,否则资源⽆法被访问 (同时也不会有报错提⽰)

  • 5️⃣运⾏程序, 可以看到图标已经能正确设置
    在这里插入图片描述

接下来, 我们可以进⼊到项⽬的构建⽬录, 可以看到, ⽬录中多了⼀个 qrc_resource.cpp ⽂件,直接打开这个⽂件, 可以看到类似如下代码:
在这里插入图片描述
在这里插入图片描述

上述代码其实就是通过 unsigned char 数组, 把 rabbit.png 中的每个字节都记录下来,这些代码会被编译到 exe 中,后续⽆论 exe 被复制到哪个⽬录下, 都确保能够访问到该图⽚资源。

上述 qrc 这⼀套资源管理⽅案, 优点和缺点都很明显:

  • 优点: 确保了图⽚, 字体, 声⾳等资源能够真正做到 “⽬录⽆关”, ⽆论如何都不会出现资源丢失的情况。
  • 缺点: 不适合管理体积⼤的资源,如果资源⽐较⼤ (⽐如是⼏个 MB 的⽂件), 或者资源特别多,⽣成的最终的 exe 体积就会⽐较⼤, 程序运⾏消耗的内存也会增⼤,程序编译的时间也会显著增加。

2.6 🍎windowOpacity🍎

API说明
windowOpacity()获取到控件的不透明数值,返回 float, 取值(0.0~1.0) 其中 0.0 表⽰全透明, 1.0 表⽰完全不透明
setWindowOpacity(float n)设置控件的不透明数值

这个很简单,就不再过多演示了。

2.7 🍎cursor🍎

API说明
cursor()获取到当前 widget 的 cursor 属性, 返回 QCursor 对象.当⿏标悬停在该 widget 上时, 就会显⽰出对应的形状
setCursor(const QCursor& cursor)设置该 widget 光标的形状. 仅在⿏标停留在该 widget 上时⽣效
QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局光标的形状. 对整个程序中的所有 widget 都会⽣效,覆盖上⾯的 setCursor 设置的内容

我们先创建一个按钮,然后在右侧的编辑框里面找到cursor这个选项:
在这里插入图片描述
当我们将鼠标移动到按钮那里的时候就会显示我们设置的是哪一种形状。
出了系统默认带的形状外,我们还可以自定义的设置,方式还是使用的是qrc机制:
在这里插入图片描述

2.8 🍎font🍎

API说明
font()获取当前 widget 的字体信息,返回 QFont 对象
setFont(const QFont& font)设置当前 widget 的字体信息

关于 QFont:

属性说明
family字体家族 ⽐如 “楷体”, “宋体”, “微软雅⿊” 等
pointSize字体⼤⼩
weight字体粗细. 以数值⽅式表⽰粗细程度取值范围为 [0, 99], 数值越⼤, 越粗
bold是否加粗. 设置为 true, 相当于 weight 为 75. 设置为 false 相当于weight 为 50
italic是否倾斜
underline是否带有下划线
strikeOut是否带有删除线

这个设置我们可以使用代码的方式也可以使用可视化的方式进行。

2.9 🍎toolTip🍎

API说明
setToolTip设置 toolTip,⿏标悬停在该 widget 上时会有提⽰说明
setToolTipDuring设置 toolTip 提⽰的时间(单位 ms),时间到后 toolTip ⾃动消失

toolTip 只是给⽤⼾看的,在代码中⼀般不需要获取到 toolTip

示例:
在这里插入图片描述

在这里插入图片描述

2.10 🍎focusPolicy🍎

设置控件获取到焦点的策略,⽐如某个控件能否⽤⿏标选中或者能否通过 tab 键选中。

所谓 “焦点” , 指的就是能选中这个元素,接下来的操作 (⽐如键盘操作), 就都是针对该焦点元素进⾏的了,这个对于 输⼊框, 单选框,复选框等控件⾮常有⽤的。

API说明
focusPolicy()获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)设置 widget 的 focusPolicy

Qt::FocusPolicy 是⼀个枚举类型,取值如下:

  • Qt::NoFocus :控件不会接收键盘焦点
  • Qt::TabFocus :控件可以通过Tab键接收焦点
  • Qt::ClickFocus :控件在⿏标点击时接收焦点
  • Qt::StrongFocus :控件可以通过Tab键和⿏标点击接收焦点 (默认值)
  • Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增的选项, ⼀般很少使⽤)

2.11 🍎styleSheet🍎

通过 CSS 设置 widget 的样式。

CSS (Cascading Style Sheets 层叠样式表) 本⾝属于⽹⻚前端技术,主要就是⽤来描述界⾯的样式,所谓 “样式”, 包括不限于 ⼤⼩, 位置, 颜⾊, 间距, 字体, 背景, 边框等。我们平时看到的丰富多彩的⽹⻚, 就都会⽤到⼤量的 CSS,Qt 虽然是做 GUI 开发, 但实际上和 ⽹⻚前端 有很多异曲同⼯之处. 因此 Qt 也引⼊了对于 CSS的⽀持。

CSS 中可以设置的样式属性⾮常多,基于这些属性 Qt 只能⽀持其中⼀部分, 称为 QSS (Qt Style Sheet)具体的⽀持情况可以参考 Qt ⽂档中 “Qt Style Sheets Reference” 章节。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

装饰器模式、代理模式、适配器模式对比

装饰器模式、代理模式和适配器模式都是结构型设计模式,它们的主要目标都是将将类或对象按某种布局组成更大的结构,使得程序结构更加清晰。这里将装饰器模式、代理模式和适配器模式进行比较,主要是因为三个设计模式的类图结构相似度较高、且功…

10分钟了解数据质量管理-奥斯汀格里芬 Apache Griffin

在不重视数据质量的大数据发展时期,Griffin并不能引起重视,但是随着数据治理在很多企业的全面开展与落地,数据质量的问题开始引起重视。 1.Griffin简介 Griffin是一个开源的大数据数据质量解决方案,由eBay开源,它支持…

httpClient提交报文中文乱码

httpClient提交中文乱码,ContentType类型application/json 指定提交参数的编码即可 StringEntity se new StringEntity(paramBody.toJSONString(),"UTF-8");se.setContentType("application/json");context.httpPost.setHeader("Cookie&…

【PPT设计】颜色对比、渐变填充、简化框线、放大镜效果、渐变形状配图、线条的使用

目录 图表颜色对比、渐变填充、简化框线放大镜效果渐变形状配图 线条的使用区分标题与说明信息区分标题与正文,区分不同含义的内容**聚焦****引导****注解****装饰** 图表 颜色对比、渐变填充、简化框线 小米汽车正式亮相!你们都在讨论价格,我全程只关…

【实时数仓架构】方法论(未完)

笔者不是专业的实时数仓架构,这是笔者从其他人经验和网上资料整理而来,仅供参考。写此文章意义,加深对实时数仓理解。 实时数仓背景和场景 一、实时数仓架构技术演进 1.1、四种架构演进 1)离线大数据架构 一种批处理离线数据分…

State.initState() must be a void method without an `async` keyword错误解析

文章目录 报错问题报错的代码 错误原因解决方法解析 另外的方法 报错问题 State.initState() must be a void method without an async keyword如下图: 报错的代码 报错的代码如下: overridevoid initState() async{super.initState();await getConf…

springboot权限验证学习-上

创建maven项目 创建父工程 这类项目和原来项目的区别在于&#xff0c;打包方式是pom 由于pom项目一般都是用来做父项目的&#xff0c;所以该项目的src文件夹可以删除掉。 创建子工程 子工程pom.xml 父工程pom.xml 添加依赖 父工程导入依赖包 <!--导入springboot 父工程…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

fetch请求后端返回文件流,并下载。

前端&#xff1a; <script src"~/layui/layui.js"></script> <script src"~/Content/js/common/js/vue.min.js"></script> <script src"~/Content/js/common/js/jquery-1.10.2.min.js"></script><styl…

[论文笔记]GAUSSIAN ERROR LINEAR UNITS (GELUS)

引言 今天来看一下GELU的原始论文。 作者提出了GELU(Gaussian Error Linear Unit,高斯误差线性单元)非线性激活函数&#xff1a; GELU x Φ ( x ) \text{GELU} x\Phi(x) GELUxΦ(x)&#xff0c;其中 Φ ( x ) \Phi(x) Φ(x)​是标准高斯累积分布函数。与ReLU激活函数通过输入…

pycharm配置wsl开发环境(conda)

背景 在研究qanything项目的过程中&#xff0c;为了进行二次开发&#xff0c;需要在本地搭建开发环境。然后根据文档说明发现该项目并不能直接运行在windows开发环境&#xff0c;但可以运行在wsl环境中。于是我需要先创建wsl环境并配置pycharm。 wsl环境创建 WSL是“Windows Su…

【多模态大模型】AI对视频内容解析问答

文章目录 1. 项目背景2. 直接对视频进行解析进行AI问答&#xff1a;MiniGPT4-Video2.1 MiniGPT4-Video效果 3. 对视频抽帧为图片再进行AI问答3.1 视频抽帧3.2 图片AI问答3.2.1 阿里通义千问大模型 Qwen-vl-plus3.2.2 Moonshot 1. 项目背景 最近在做一个项目,需要使用AI技术对视…

DDP示例

https://zhuanlan.zhihu.com/p/602305591 https://zhuanlan.zhihu.com/p/178402798 关于模型保存与加载 &#xff1a; 其实分为保存 有module和无module2种 &#xff1b; &#xff08;上面知乎这篇文章说带时带module) 关于2种带与不带的说明&#xff1a; https://blog.csdn.…

69、栈-有效的括号

思路&#xff1a; 有效的括号序列是指每个开括号都有一个对应的闭括号&#xff0c;并且括号的配对顺序正确。 比如&#xff1a;({)} 这个就是错误的&#xff0c;({}) 这个就是正确的。所以每一个做括号&#xff0c;必有一个对应的右括号&#xff0c;并且需要顺序正确。这里有…

Meilisearch 快速入门(Windows 环境) 搜索引擎 语义搜索

Meilisearch 快速入门(Windows 环境)# 简介# Meilisearch 是一个基于 rust 开发的,快速的、完全开源的轻量级搜索引擎。它的数据存储基于磁盘与内存映射,不受 RAM 限制。在一定数量级下,搜索速度不逊于 Elasticsearch。 下载# 官方服务端包下载地址:github.com/meili…

常用图像加密技术-流密码异或加密

异或加密是最常用的一种加密方式&#xff0c;广泛的适用于图像处理领域。这种加密方式依据加密密钥生成伪随机序列与图像的像素值进行异或操作&#xff0c;使得原像素值发生变化&#xff0c;进而使得图像内容发生变化&#xff0c;达到保护图像内容的目的。 该加密方法是以图像…

鸿蒙OpenHarmony【小型系统 烧录】(基于Hi3516开发板)

烧录 针对Hi3516DV300开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录)&#xff09;外&#xff0c;还可以使用HiTool进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Window…

深度学习模型的优化和调优de了解

深度学习模型的优化和调优&#xff1a;随着深度学习应用的广泛&#xff0c;优化和调优神经网络模型成为了一个重要的问题。这包括选择合适的网络架构、调整超参数、应对过拟合等。 深度学习模型的优化和调优是指在训练神经网络模型时&#xff0c;通过一系列技术和方法来提高模型…

FTP 文件传输协议

FTP 文件传输协议 作用 用来传输文件的 FTP协议采用的是TCP作为传输协议&#xff0c; 21号端口用来传输FTP控制命令的&#xff0c; 20号端口用来传输文件数据的 FTP传输模式&#xff1a; 主动模式&#xff1a; FTP服务端接收下载控制命令后&#xff0c;会主动从tcp/20号端口…

C语言之详细讲解文件操作

什么是文件 与普通文件载体不同&#xff0c;文件是以硬盘为载体存储在计算机上的信息集合&#xff0c;文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名&#xff0c;用于指示文件类型&#xff08;例如&#xff0c;图片文件常常以KPEG格式保存并且文件…