【Qt】QWidget核心属性相关API

目录

一. enabled——是否可用

二. geometry——几何位置

window frame

三. windowTitle——窗口标题

四. windowIcon——窗口图标

​qrc文件

五. windowOpacity——透明度 

六. cursor——光标

自定义光标

七. font——字体

八. toolTip——提示栏

九. focusPolicy——焦点策略(选中策略)

十.  styleSheet——样式表


 

Widget(组件),是Qt的核心概念,常叫做“控件”。控件是构成图形化界面的基本要素。

常见的控件有:按钮,输入框,下拉框,窗口等

在开发图形化界面时,为了布局和功能,控件有多种属性和管理对应属性的API

在Qt Designer中,已经有简便我们开发的图形化界面

  • 左侧是Qt提供的所有的控件,可通过拖拽到程序界面的方式添加控件
  • 选中一个控件,右下方会显示该控件的objectName,和其属性。后续使用代码开发时,可以通过ui->objectName的方式访问到该控件对象

一. enabled——是否可用

控件的首要目的是让用户使用,接受用户事件。而enabled属性是标识该控件是否可用

  • 不可用,即“禁用”指的是该控件不能接收任何用户的输入事件,并且外观上往往是灰色
  • 如果一个widget被禁用,则该widget的子元素也被禁用。例如一个窗口被禁用了,那么该窗口上的按钮,输入框等也会被禁用
API说明
isEnabled()获取该控件的可用状态
setEnabled()设置该控件是否可用,true表示可用,false表示禁用

 示例:

通过拖拽添加两个按钮:pushButton和pushButton_enabled(各自的objectName)

接着右键控件,选中“转到槽”,再选择要关联的信号——clicked。

该部分知识设计信号与槽,可参看【Qt】信号与槽

接着就可以在代码编写界面实现具体的槽函数。widget.cpp代码如下:

#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()
{qDebug() << "当前按钮可用";//pushButton的打印测试
}void Widget::on_pushButton_enabled_clicked()
{bool enabled = ui->pushButton->isEnabled();if(enabled)ui->pushButton->setEnabled(false);//设置不可用elseui->pushButton->setEnabled(true);//设置可用
}

不可用的控件一般为灰色,按钮点击效果如下: 

在Qt Designer中也可以通过右下方的控件属性改变控件的可用状态

二. geometry——几何位置

在Qt中,界面的分布使用左手坐标系,如图所示

描述一个控件所在界面位置,通过这四个属性——x,y,height,width

Qt将这四个属性封装在了QRect(矩阵)中

API说明
geometry()获取到控件的位置和尺寸.返回值是一个QRect
setGeometry(QRect)设置控件的位置和尺寸,通过QRect设置
setGeometry(int x, int y, int width, int height)设置控件的位置和尺寸,通过四个属性分别设置

示例:通过四个按钮,控制一个按钮的上下左右移动

界面布局,即各按钮的objectName如下

 控制移动的四个按钮都关联clicked信号,各自槽函数实现如下:

void Widget::on_pushButton_up_clicked()
{QRect rect = ui->pushButton->geometry();rect.setY(rect.y() - 5);//向上移动5个像素点ui->pushButton->setGeometry(rect);
}void Widget::on_pushButton_down_clicked()
{QRect rect = ui->pushButton->geometry();rect.setY(rect.y() + 5);//向下移动5个像素点ui->pushButton->setGeometry(rect);
}void Widget::on_pushButton_left_clicked()
{QRect rect = ui->pushButton->geometry();rect.setX(rect.x() - 5);//向左移动5个像素点ui->pushButton->setGeometry(rect);
}void Widget::on_pushButton_right_clicked()
{QRect rect = ui->pushButton->geometry();rect.setX(rect.x() + 5);//向右移动5个像素点ui->pushButton->setGeometry(rect);
}

实际程序运行效果如下:

实际程序运行发现,该方式设置的控件位置,不仅会改变控件对象的左上角位置,还可以改变控件的height和width。

如果要想实现控件对象的平移,相应槽函数可以如下编写

void Widget::on_pushButton_up_clicked()
{QRect rect = ui->pushButton->geometry();//向上移动5个像素点
//    rect.setY(rect.y() - 5);
//    ui->pushButton->setGeometry(rect);ui->pushButton->setGeometry(rect.x(), rect.y() - 5, rect.width(),rect.height());
}void Widget::on_pushButton_down_clicked()
{QRect rect = ui->pushButton->geometry();//向下移动5个像素点
//    rect.setY(rect.y() + 5);
//    ui->pushButton->setGeometry(rect);ui->pushButton->setGeometry(rect.x(), rect.y() + 5, rect.width(),rect.height());
}void Widget::on_pushButton_left_clicked()
{QRect rect = ui->pushButton->geometry();//向左移动5个像素点
//    rect.setX(rect.x() - 5);
//    ui->pushButton->setGeometry(rect);ui->pushButton->setGeometry(rect.x() - 5, rect.y(), rect.width(),rect.height());
}void Widget::on_pushButton_right_clicked()
{QRect rect = ui->pushButton->geometry();//向右移动5个像素点
//    rect.setX(rect.x() + 5);
//    ui->pushButton->setGeometry(rect);ui->pushButton->setGeometry(rect.x() + 5, rect.y(), rect.width(),rect.height());
}

程序运行效果如下:

window frame

实际上Qt的QWidget的位置信息,有两个参照物。我们在Qt Designer中操作的界面是不包含标题栏和边框的

边框和标题栏都是Qt帮我们自动生成的,这就是window frame,是操作系统提供的,有特定API,在Qt中,window frame是在QWidget的构造函数中创建的

所以相对位置就有两个参照物, 包含window frame的和不包含window frame的

上述的geometry()和setGeometry()就是不包含window framede的


包含window frame

API说明
frameGeometry()获取到控件的位置和尺寸.返回值是一个QRect,包含window frame
setFrameGeometry(QRect)设置控件的位置和尺寸,通过QRect设置
setFrameGeometry(int x, int y, int width, int height)设置控件的位置和尺寸,通过四个属性分别设置

还有直接获取位置信息的方法,其返回值也是包含window frame的位置信息

ui->pushButton->x();
ui->pushButton->y();
ui->pushButton->width();
ui->pushButton->height();

 而通过geometry返回的QRect获取的位置信息就不包含window frame的

ui->pushButton->geometry().x();
ui->pushButton->geometry().y();
ui->pushButton->geometry().width();
ui->pushButton->geometry().height();

三. windowTitle——窗口标题

windowTitle顾名思义,就是窗口的标题

API说明
setWindowTitle设置当前控件的窗口标题

注意:只有最外层的窗口设置窗口标题才会有效果,如果是窗口中一个按钮调用setWindowTitle方法,是没有任何效果的

四. windowIcon——窗口图标

窗口图标就是图形化程序左上角的图标,任务列表中也会显示窗口图标,例如:

API说明
windowIcon()获取控件的窗口图标,返回QIcon对象
setWindowIcoen(const QIcon& icon)设置控件的窗口图标

setWindowIcon和setWindowTitle一样,只对最外层/顶层的窗口有效 

API说明
QIcon(const char*)将该路径的图片转为二进制,构造出QIcon对象

示例:

#include "widget.h"
#include "ui_widget.h"#include <QIcon>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QIcon icon(R"(C:\Users\Lenovo\Desktop\code\7.jpg)");//使用原始字符串字面量this->setWindowIcon(icon);
}Widget::~Widget()
{delete ui;
}

 qrc文件

上述构造windowIcon使用的图片是绝对路径,这是不合理的

  1. 用户不一定有该路径,比如绝对路径是F:/image/1.jpg,但如果用户只有C盘和D盘,那该路径就不存在
  2. 如果该路径的图片丢失,则无法加载窗口图标

使用相对路径的方式,可以保证路径存在

假设基准目录是D:/,给定的相对路径是./image/1.jpg  =》 在基准目录下找image目录,再在image目录中找1.jpg

 .  表示当前目录  ..表示上级目录

对于Qt程序来说,当前工作可能是变化的。比如通过Qt Creator运行的程序,当前工作目录是项目的构建目录;直接双击.exe运行,工作目录则是exe所在目录

所谓构建目录,是和Qt项目并列的,专门用来放生成的临时文件和最终exe的目录


但相对路径的方式无法解决路径图片丢失的问题,Qt提供的解决方法是qrc文件

qrc文件是一种xml格式的资源配置文件,用xml(标签)记录硬盘上的文件和对于的随意指定的资源名称,应用程序通过资源名称来访问这些资源

在Qt开发中,可以通过将资源文件添加到项目中来方便地访问和管理这些资源,这些资源文件可以位于qrc文件所在目录的同级或其子目录下

在构建程序的过程中,Qt会把资源文件的二进制数据转成cpp代码,编译到exe中,从而使依赖资源变得“路径无关”


使用qrc文件设置窗口图标

1. 点击文件,选择新建文件

2. 选择“文件和类”中的Qt 

3. 选择Qt Resource File

4. 填写文件名,路径名 ,注意文件名和路径名都要包含中文和特殊符号

版本控制根据自己的项目,跟创建项目时选择一致即可

Qt Creator为我们提供了qrc文件的图形化开发界面

5. 在qrc编辑器中,添加前缀(prefix)

所谓的前缀,可以理解为“目录” . 该前缀决定了后续我们如何在代码中访问资源。

此处我添加了一个"/"前缀

6. 选择添加的图片——Add Files

Qt要求添加的文件必须是在qrc文件的同级目录,或者同级目录的子目录中,所以需要提前把图片复制到该目录下

如果选择其他目录下的图片,Qt不允许添加

如下是添加成功的效果,然后我们就可以在代码中使用该图片

#include "widget.h"
#include "ui_widget.h"#include <QIcon>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QIcon icon(":/7.jpg");//:开头表示从qrc中获取资源,/是我们设置的前缀,7.jpg是资源名this->setWindowIcon(icon);
}Widget::~Widget()
{delete ui;
}

运行程序后,在项目的构建目录下,我们可以看到目录多了一个qrc_XXX.cpp和qrc_XXX.o文件。这两个文件都是Qt的元编程生成的:Qt基于qrc文件生成C++代码(qrc_XXX.cpp),在程序编译时一同编译(qrc_XXX.o),最后链接生成.exe文件

其中,图片是被转换成了一个字符数组,内置在程序代码中

 如此就既不需要关心图片资源的路径问题,也不需要关心图片丢失的问题

缺点:qrc文件是通过将图片资源转化为字符数组的形式存储在程序中,这势必会增加程序的大小,导致程序的编译,加载,运行更消耗资源。

五. windowOpacity——透明度 

windowOpacity用于控制控件的透明度,其数值为0.0 ~ 1.0,数值越大越不透明。0.0表示全透明,1.0表示完全不透明

如此的数值含义,理解为不透明度更合适,数值越大越不透明

API说明
windowOpacity()返回float类型,控件的不透明度
setWindowOpacity(float n)设置控件的不透明度

示例:添加两个按钮,一个增大不透明度,一个减小不透明度 

1. 使用Qt Designer添加按钮,设置objectName

2. 关联信号和槽 

void Widget::on_pushButton_add_clicked()
{//增加不透明度float opacity = this->windowOpacity();if(opacity >= 1.0)return;opacity += 0.1;this->setWindowOpacity(opacity);
}void Widget::on_pushButton_sub_clicked()
{//减小不透明度float opacity = this->windowOpacity();if(opacity <= 0.0)return;opacity -= 0.1;this->setWindowOpacity(opacity);
}

3. 运行程序,点击“-”,降低不透明度

六. cursor——光标

在Qt中,我们可以通过设置鼠标移动到不同控件,显示不同光标来增加程序的丰富性和美观

API说明
cursor()

获取当前控件的光标属性,返回QCursor对象

当鼠标悬停在该控件上,就会显示出对应形状

setCursor(const QCursor &cursor)设置该控件的光标,仅鼠标停留在该控件上生效
QGuiApplication::setOverrideCursor(const QCursor &cursor)设置全局光标的形状,整个程序的控件都会生效,覆盖各自控件setCursor设置的内容

图形化开发 

直接通过属性的cursor选择

代码编写 

 Qt封装了一个枚举类,枚举了内置的光标类型

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QCursor cursor(Qt::WaitCursor);ui->pushButton->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

自定义光标

为了让程序更加美观,我们也可以自定义光标,将图标做成光标

图片导入项目的方法也是使用qrc文件的方式,此处不过多赘述

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPixmap pixmap(":/candy.png");//位图对象pixmap = pixmap.scaled(40, 40);//对图片进行缩放——尺寸40 * 40像素QCursor cursor(pixmap, 0, 0);//构造光标ui->pushButton->setCursor(cursor);//设置光标
}Widget::~Widget()
{delete ui;
}
  1. QCursor构造函数的后两个参数是指明热点的位置,热点就是光标实际点击的点,此处设置的位置是相对光标的左上角的位置,(0, 0)就代表光标的最左上角
  2. QPixmap的scaled函数不是对原本图标的改变,是返回一个改变后的图标的副本

七. font——字体

Qt封装了QFont类,实现对控件中字体的管理,其属性包括字体家族,字体大小,字体粗细等等

属性说明
family字体家族,如“楷体”,“宋体”,“微软雅黑”等
pointSize字体大小
weight字体粗细,以数值方式表示粗心程度取值范围[0,99],数值越大,字体越粗
bold是否加粗,bool值,设置true,相当于weight = 75,false相当于weight = 50
italic是否倾斜
underline是否有下划线
strikeOut是否带有删除线

相关API

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

示例:

图形化开发

使用Qt Designer可以直接在属性处选择字体信息

代码编写 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QFont font = ui->label->font();//获取字体信息font.setBold(true);//加粗font.setFamily("宋体");//设置字体家族font.setPointSize(10);//设置大小font.setItalic(true);//设置倾斜ui->label->setFont(font);
}Widget::~Widget()
{delete ui;
}

八. toolTip——提示栏

当用户将鼠标悬置在控件上方时,我们可以添加提示栏来告诉用户如何使用该控件或者显示一些信息。例如在编译器中,我们将鼠标悬停在一个方法上,编译器就会弹出一个窗口显示其方法声明,这就是提示栏

相关API

API说明
toolTip()返回提示栏的文本,返回值为QString
setToolTip(const QString &string)设置提示栏文本
toolTipDuration()返回提示栏持续时间,int类型,单位为毫秒
setToolTipDuration(const int msec)试着提示栏持续时间,单位为毫秒。传-1代表提示栏不消失

示例:

图形化开发

可直接设置toolTip文本和toolTipDuration持续时间

代码编写

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_yes->setToolTip("Yes按钮");ui->pushButton_yes->setToolTipDuration(-1);ui->pushButton_no->setToolTip("No按钮");ui->pushButton_no->setToolTipDuration(4000);
}Widget::~Widget()
{delete ui;
}

九. focusPolicy——焦点策略(选中策略)

所谓“焦点”,指的是能选中这个元素的方法,比如键盘操作。

“”焦点“”对于输入框、单选框、复选框等控件很重要

常见的焦点策略(选中策略)有点击和Tab

相关API 

API说明
focusPolicy()获取该控件的focusPolicy,返回值类型为Qt::FocusPolicy
setFocusPolicy(const Qt::FocusPolicy)设置该控件的focusPolicy

Qt::FocusPolicy是Qt内置的一个枚举类,取值如下:

  • Qt::NoFocus:该控件不会接受键盘焦点,不可被选中
  • Qt::TabFocus:该控件可通过Tab键接受焦点,可通过Tab选中
  • Qt::ClickFocus:该控件可通过鼠标点击接受焦点,看通过点击选中
  • Qt::StrongFocus:该控件可通过Tab键和点击选中
  • Qt::WheelFocus:该控件可通过Tab键,点击,鼠标滚轮选中

示例:

图形化开发

代码编写

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setFocusPolicy(Qt::StrongFocus);
}Widget::~Widget()
{delete ui;
}

十.  styleSheet——样式表

Qt可以通过CSS设置widget样式

CSS(Cascading Style Sheets 层叠样式表) 是网页前端技术,主要就是用来描述界面的样式

所谓“样式”,包括但不限于大小、位置、颜色、间距、字体、背景、边框等

CSS中可以设置的样式属性非常多,基于这些属性,Qt可以支持其中一部分,称为QSS(Qt Style Sheets)。具体的支持情况可以参看Qt文档中"Qt Style Sheets Reference"章节 

示例:设置文本样式

图形化开发

(1). 在Qt Designer添加一个Label标签,右键,选择“改变样式表”,使用CSS设置样式

语法同CSS,使用键值对的方式设置样式,其中键和值之间使用  分隔。键值对之间使用分隔

Qt Designer只能对样式的基本格式进行校验,不能检测出哪些样式不被Qt支持

比如text-align:center,这样的文本居中操作,就无法支持

 代码实现

API说明
styleSheet()返回该控件的样式表,返回值为QString
setStyleSheet(const QString &styleSheet)设置样式表,使用QSS风格字符串
ui->label->setStyleSheet("font-family:微软雅黑; font-size:30px; ");

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

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

相关文章

【QT】QT 概述(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事项)

一、Qt 背景介绍 1、什么是 Qt Qt 是一个跨平台的 C 图形用户界面应用程序框架。 它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展。Qt 为开发者提供了一种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和…

天空星LVGL移植记录

一、移植的LVGL版本8.2 下载地址&#xff1a;&#xff08;网页下个加速脚本&#xff09;GitHub - lvgl/lvgl: Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.https://github.com/lvgl/lvgl 二、硬件设备 天空星STM32F407VET6 ILI9…

vue3中provide 和 inject 用法#Vue3中解决局部刷新问题

vue3中provide 和 inject 用法#Vue3中解决局部刷新问题 在父子组件传递数据时&#xff0c;通常使用的是 props 和 emit&#xff0c;父传子时&#xff0c;使用的是 props&#xff0c;如果是父组件传孙组件时&#xff0c;就需要先传给子组件&#xff0c;子组件再传给孙组件&…

【JavaScript 算法】KMP算法:高效的字符串匹配

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理部分匹配表的构建 二、算法实现构建部分匹配表KMP字符串匹配注释说明&#xff1a; 三、应用场景四、总结 KMP算法&#xff08;Knuth-Morris-Pratt Algorithm&#xff09;是一种用于在文本中高效查找子串的字符串…

昇思学习打卡-21-生成式/Diffusion扩散模型

文章目录 Diffusion扩散模型介绍模型推理结果 Diffusion扩散模型介绍 关于扩散模型&#xff08;Diffusion Models&#xff09;有很多种理解&#xff0c;除了本文介绍的离散时间视角外&#xff0c;还有连续时间视角、概率分布转换视角、马尔可夫链视角、能量函数视角、数据增强…

【BUG】已解决:AttributeError: ‘DataFrame‘ object has no attribute ‘append‘

已解决&#xff1a;AttributeError: ‘DataFrame‘ object has no attribute ‘append‘ 目录 已解决&#xff1a;AttributeError: ‘DataFrame‘ object has no attribute ‘append‘ 【常见模块错误】 错误原因&#xff1a; 解决办法&#xff1a; 欢迎来到英杰社区https:/…

215. 数组中的第K个最大元素 347. 前 K 个高频元素(LeetCode热题100)

215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 写个快排&#xff0c;使数组升序&#xff0c;返回倒数第k个元素即可 func quickSort(nums []int, l int, r int) {if l > r {return}x : nums[(l r) / 2]i : l - 1j : r 1for i < j {for {iif n…

[力扣Java解题分享]12.74搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…

大鲸鱼docker-compose单机容器集群编排工具

目录 一、Docker-compose 概述 二、Docker-compose简介 三、YML文件格式及编写注意事项 1.yml文件是什么 2.yml问价使用注意事项 3.yml文件的基本数据结构 四、Docker-compose 配置 1.Docker-Compose 配置常用字段 2.Docker Compose常用命令 3.使用Docker-compose创建…

【笔记:3D航路规划算法】一、随机搜索锚点(python实现,讲解思路)

目录 关键概念3D路径规划算法1. A*算法2. 快速随机锚点1. 初始化&#xff1a;2. 实例化搜索算法&#xff1a;3. 路径生成&#xff1a;4. 绘制图像&#xff1a; 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、…

【医学影像】X86+FPGA:支持AI医学影像设备应用的工控主板,赋能CT、MRI、X线、超声等医学影像设备

支持AI医学影像设备应用的工控主板 在我国人口老龄化问题不断加剧&#xff0c;对影像诊断需求持续增长&#xff0c;和国家利好高端医学影像市场发展的系列法规和政策接连出台的大环境下&#xff0c;AI医学影像设备产业迎来发展黄金期。紧跟发展大势&#xff0c;基于12/13代 In…

Federated Graph Augmentation for Semisupervised Node Classification

文章目录 1 本文的主要贡献2 FedGA 模型3 FedGA-L 模型3.1 模型的思想3.2 模型具体步骤 4 实验 1 本文的主要贡献 解决图联邦学习中利用图拓扑结构和无标签节点数据的难题&#xff0c;提出了一种称为联合图增强(FedGA)的新方法&#xff0c;以更好地利用拓扑信息&#xff0c;然…

【python学习】python的知识点总结、特点和思考及解答(代码示例)

引言 python 是一种高级编程语言&#xff0c;具有简洁的语法和丰富的库&#xff0c;被广泛应用于Web开发、数据分析、人工智能、科学计算等领域 文章目录 引言一、python知识点总结1.1 基础语法1.1.1 变量和数据类型1.1.2 控制结构1.1.3 函数和模块 1.2 面向对象编程1.2.1 类和…

如何通过成熟的外发平台,实现文档安全外发管理?

文档安全外发管理是企业信息安全管理的重要组成部分&#xff0c;它涉及到企业向外发送的文件&#xff0c;需要进行严格的控制和管理&#xff0c;防止敏感或机密信息的泄露。以下是一些关键考虑因素&#xff1a; 文件外发的挑战&#xff1a;企业在文件外发时面临的主要挑战包括…

wls2下的centos使用桥接模式连接宿主机网络独立静态ip

前提&#xff1a;wsl2已安装&#xff0c;可正常更新 1.在控制面板中&#xff0c;打开开启或关闭windows功能&#xff0c;将里面的 Hyper-V功能打开&#xff0c;此处涉及重启 2. 按一下win键&#xff0c;输入hy&#xff0c;上面可以看到Hyper-V Manager,点进去 3.选择右边的 Vi…

Fiddler抓包

一个不错的文档&#xff1a;萌新要入行-CSDN博客 测试之路&#xff1a;3年经验来面试20K的测试岗&#xff0c;连基本功都不会&#xff0c;还不如去招应届生 Fiddler教程&#xff1a;https://www.cnblogs.com/zhangyangcheng/articles/15218175.html Fiddler安装教程&#xff1…

F5理念左移,实现API安全的全生命周期管理

API是我们现代数字生活中隐形的中枢神经系统&#xff0c;从远程医疗到在线银行&#xff0c;实时API让世界变得更美好。不可否认的是&#xff0c;当应用程序和架构发生变化时&#xff0c;攻击面也会随之变化。传统的安全措施&#xff0c;比如WAF、DDoS和Bot防护仍然必不可少&…

java中传引用问题

在 Java 中&#xff0c;所有对象都是通过引用传递的&#xff0c;而基本数据类型是通过值传递的。 引用传递&#xff1a; 当一个对象作为参数传递给方法时&#xff0c;传递的是对象的引用。对这个对象引用进行的修改会影响到原始对象。例如&#xff1a; public class Test {p…

在eclipse中使用Junit单元测试的准备工作和基本介绍

JUnit准备工作和基本介绍 JUnit是一个Java语言的单元测试框架。。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 Junit 测试也是程序员测试&#xff0c;即所谓的白盒测试&#xff0c;它需要程序员知道被测试的代码如何完成功能&#xff0c;以及完成什么样的功能 …

Ubuntu24.04 NFS 服务配置

1、NFS 介绍 NFS 是 Network FileSystem 的缩写&#xff0c;顾名思义就是网络文件存储系统&#xff0c;它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS&#xff0c;我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件&#xff0c;就像访问本…