【Qt】QWidget核心属性相关API

news2024/9/20 7:57:38

目录

一. 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);//设置不可用
    else
        ui->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.coloradmin.cn/o/1945670.html

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

相关文章

git免密推送代码至仓库gitee/github 常用命令

代码托管 gitee github gitclone 1 生成/添加SSH公钥 ssh-keygen -C "***qq.com"2 gitee添加公钥 查看公钥 cat ~/.ssh/id_rsa.pub然后再gitee添加 3 验证 gitee ssh -T gitgitee.comgithub ssh -T gitgithub.comgitclone&#xff1a;无法测试&#xff0c…

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL&#xff0c;由微软推出的关系型数据库&#xff0c;默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件&#xff08;.mdf&#xff09;&#xff1a;主要的数据文件&#xff0c;包含数据表中的数据和对象信息…

Vue3可媲美Element Plus Tree组件开发之append节点

在前面的章节&#xff0c;我们完成了可媲美Element Plus Tree组件的基本开发。通过实现各种计算属性&#xff0c;tree数据状态变化引起的视图更新被计算属性所接管了&#xff0c;无需我们再手动做各种遍历、查找以及手动监听操作&#xff0c;这样后续开发高级功能变得易如反掌啦…

插入和选择排序

1.1直接插入排序 void InsertSort(int* a, int n) {for (int i 1; i < n - 1; i) {//i的范围要注意的&#xff0c;防止指针越界int end i;int tmp a[end 1];while (end>0) {if (tmp< a[end]) {a[end 1] a[end];//小于就挪动&#xff0c;虽然会覆盖后面空间的值…

Qt Creator平台编译snmp++

声明 &#xff1a;本文的大部分资源参考自文章&#xff0c;编译snmp的方法我也是在这里学习的&#xff0c;结合自己的需求&#xff0c;做了snmp和Agent的混合编译。需要了解更多的详情可以点击链接去看原文&#xff0c;我总结了自己的编译过程&#xff0c;并写下此文作为一个回…

Springboot+vue自制可爱英语日记系统-XD动画测试版

目录 项目背景与愿景 项目流程 需求分析 设计之美 技术实现 部署策略 未来展望 项目寄语 项目预览 项目页面展现 引导页(3张) 首页 日记模块 日记模块-写日记 信箱模块 回收箱模块 前端开发 前端开发概述 关键技术选型 开发流程 后端开发 后端开发概述 …

【算法/训练】:动态规划

一、路径类 1. 字母收集 思路&#xff1a; 1、预处理 对输入的字符矩阵我们按照要求将其转换为数字分数&#xff0c;由于只能往下和往右走&#xff0c;因此走到&#xff08;i&#xff0c;j&#xff09;的位置要就是从&#xff08;i - 1&#xff0c; j&#xff09;往下走&#x…

C++笔记3:基类指针delete子类对象的内存泄漏问题

根据《effective C》第7章所述&#xff0c;new的一个子类对象赋值给基类指针delete的时候为了防止子类的析构函数没有调用要在基类的析构函数加上virtual 关键字&#xff1a; #include <stdint.h> #include <iostream> #include <iomanip> #include <vec…

零代码实现GIS视效提升,一键添加体积云体积雾

在三维GIS开发中&#xff0c;场景的真实感和高效性始终是用户的核心需求。为此&#xff0c;山海鲸可视化提供了完美的解决方案。这款免费可视化工具不仅支持多种GIS影像协议&#xff08;TMS、WMS、WMTS等&#xff09;&#xff0c;还可以一键添加体积云和体积雾效果&#xff0c;…

FastGPT 知识库搜索测试功能解析(一)

本文以 FastGPT 知识库的搜索测试功能为入口,分析 FastGPT 的知识检索流程。 一、搜索功能介绍 1.1 整体介绍 搜索测试功能包含三种类型:语义检索、全文检索、混合检索。 语义检索:使用向量进行文本相关性查询,即调用向量数据库根据向量的相似性检索; 全文检索:使用…

Axure软件新功能解析与应用技巧分享

Axure是一种用于创建原型和交互设计的软件工具&#xff0c;广泛应用于操作界面。&#xff08;UI&#xff09;和客户体验&#xff08;UX&#xff09;为了展示和测试应用程序、网站或其他数据产品的性能和操作界面&#xff0c;设计帮助产品经理、设计师和开发者制作具有交互性的原…

17.jdk源码阅读之LinkedBlockingQueue

1. 写在前面 LinkedBlockingQueue 是 Java 并发包中的一个重要类&#xff0c;常用于生产者-消费者模式等多线程编程场景。上篇文章我们介绍了ArrayBlockingQueue&#xff0c;并且与LinkedBlockingQueue做了简单的对比&#xff0c;这篇文章我们来详细分析下LinkedBlockingQueue…

RAS--APEI 报错解析流程(2)

RAS--APEI 报错解析流程(1) 除了APEI 中除了GHES会记录错误&#xff0c;在Post过程中的错误通常是通过BERT Table汇报 1.BERT Boot Error Record Table is used to report unhandled errors that occurred in a previous boot&#xff0c;it is reported as a ‘one-time polle…

一文弄懂JVM类加载器与双亲委派机制

类的加载器完成类的加载环节中的装载阶段的工作&#xff08;通过一个类的全限定名来获取该类的二进制字节流&#xff0c;且这个动作在虚拟机**外部实现**&#xff0c;即开发者可以决定如何去获取所需的类&#xff09;&#xff0c;且**不会影响后续的链接和初始化阶段&#xff0…

《算法笔记》总结No.10——链表

从第10期破例插叙一期单链表的实现&#xff0c;这个东东相当重要&#xff01;考研的同学也可以看&#xff1a;相较于王道考研的伪码不太相同&#xff0c;专注于可以运行。如果是笔试中的伪码&#xff0c;意思正确即可~ 注&#xff1a;博主之前写过一个版本的顺序表和单链表的C实…

谷粒商城实战笔记-56~57-商品服务-API-三级分类-修改-拖拽功能完成

文章目录 一&#xff0c;56-商品服务-API-三级分类-修改-拖拽功能完成二&#xff0c;57-商品服务-API-三级分类-修改-批量拖拽效果1&#xff0c;增加按钮2&#xff0c;多次拖拽一次保存完整代码 在构建商品服务API中的三级分类修改功能时&#xff0c;拖拽排序是一个直观且高效的…

Linux:Linux权限

目录 1. Linux权限的概念 2. Linux权限管理 2.1 文件访问者的分类 2.2 文件类型和访问权限 2.2.1 文件类型 2.2.2 基本权限 2.3 文件权限值的表示方法 2.4 文件访问权限的相关设置方法 2.4.1 chmod 2.4.2 chown 2.4.3 chgrp 2.4.4 umask 3. file指令 4. Linux目…

如何学习EMR:糙快猛的大数据之路(建立整体框架)

目录 初学EMREMR是什么&#xff1f;我的EMR学习故事糙快猛学习法则代码示例: 你的第一个EMR任务学习EMR的深入步骤EMR进阶技巧实用资源推荐常见挑战和解决方案 EMR生态EMR生态系统深度探索1. EMR上的Hadoop生态系统2. EMR Studio3. EMR on EKS 高级EMR配置和优化1. EMR实例集策…

音视频入门基础:PCM专题(3)——使用Audacity工具分析PCM音频文件

音视频入门基础&#xff1a;PCM专题系列文章&#xff1a; 音视频入门基础&#xff1a;PCM专题&#xff08;1&#xff09;——使用FFmpeg命令生成PCM音频文件并播放 音视频入门基础&#xff1a;PCM专题&#xff08;2&#xff09;——使用Qt播放PCM音频文件 音视频入门基础&am…

ICML 2024最佳论文开奖了!今年的热门投稿方向有这些

ICML 2024最近也放榜啦&#xff01;今年共有10篇论文夺得最佳论文奖&#xff0c;包括火爆的Stable Diffusion 3、谷歌VideoPoet以及世界模型Genie。 ICML是国际机器学习顶会&#xff0c;也是CCF-A类学术会议。今年这届顶会一共收到了9473篇论文&#xff0c;其中2610篇被录用&am…