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

Qt信号槽机制与UI设计完全指南:从基础原理到实战应用

目录

  • 前言
  • 一、信号槽
    • 1.1 传参
    • 1.2 Qt信号与槽的对应关系
      • 1.2.1一对多关系
      • 1.2.2 多对一关系
  • 二、Designer
  • 三、Layout 布局
    • 3.1 基础用法
    • 3.2 打破布局
    • 3.3 贴合窗口
    • 3.4 伸展器(Spacer)
    • 3.5 嵌套布局
  • 四、ui指针
  • 五、QWidget
  • 六、QLabel 标签使用指南
  • 总结


前言

本篇文章,我们将继续探讨Qt的学习,解锁现代应用开发的无限可能。上一篇文章,我们已经对信号槽进行了初步的探讨,本篇文章我们将会书接上文,继续来探讨信号槽的使用。


一、信号槽

首先补充上篇文章的两个小知识点

需要注意的是,调用connect函数之前,发射者与接收者对象必须均创建完成。

把connect的函数名称改为disconnect,参数不变可以断开信号槽连接。另外,发射者或接收者对象销毁后之前连接的信号槽也会自动断开。

disconnect(sender, SIGNAL(...), receiver, SLOT(...));

1.1 传参

为了理解传参,我们先来做一个例子
【例子】 点击按钮,按钮显示点击的次数。

●text : QString
按钮显示的文字

// int → QString
QString QString::number(int n)            [static]
dialog.h#ifndef DIALOG_H
#define DIALOG_H// 包含必要的头文件
#include <QDialog>       // Qt对话框基类
#include <QPushButton>   // Qt按钮控件// 自定义对话框类,继承自QDialog
class Dialog : public QDialog
{Q_OBJECT  // Qt宏,启用信号槽机制public:// 构造函数// @param parent 父窗口指针,默认为nullptrDialog(QWidget *parent = 0);// 析构函数~Dialog();private:QPushButton* btn;  // 按钮控件指针int count;         // 记录按钮被点击的次数private slots:// 按钮点击的槽函数void btnClickedSlot();
};#endif // DIALOG_H
dialog.cpp// 包含对话框类的头文件
#include "dialog.h"// 对话框类的构造函数
Dialog::Dialog(QWidget *parent): QDialog(parent), count(0) // 使用构造初始化列表初始化父类和计数器count
{// 设置对话框窗口大小为300x300像素resize(300, 300);// 创建一个显示"0"的按钮,并指定父对象为当前对话框btn = new QPushButton("0", this);// 将按钮移动到窗口中央位置// 计算方式:窗口宽度/2 - 按钮宽度/2,窗口高度/2 - 按钮高度/2btn->move(300/2 - btn->width()/2, 300/2 - btn->height()/2);// 连接按钮的clicked信号到本类的btnClickedSlot槽函数connect(btn, SIGNAL(clicked()),this, SLOT(btnClickedSlot()));
}// 按钮点击的槽函数实现
void Dialog::btnClickedSlot()
{// 计数器自增1count++;// 将整型计数器转换为QString类型QString text = QString::number(count);// 更新按钮上显示的文本为当前计数值btn->setText(text);
}// 对话框类的析构函数
Dialog::~Dialog()
{// 释放按钮对象的内存delete btn;
}

下面为了讲解信号槽传参,强行多增加一个信号槽的理解,本质上信号槽传参是为了解决后期不同对象之间的传参问题。

dialog.h#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QPushButton>// 自定义对话框类,继承自QDialog
class Dialog : public QDialog
{Q_OBJECT  // 启用Qt的元对象系统(信号槽机制等)public:Dialog(QWidget *parent = 0);  // 构造函数,parent参数指定父窗口~Dialog();  // 析构函数private:QPushButton* btn;  // 按钮指针int count;  // 记录按钮被点击的次数private slots:// 槽函数声明void btnClickedSlot();  // 处理按钮点击事件的槽函数void countSlot(int);  // 接收int类型参数的槽函数signals:// 信号声明void countSignal(int);  // 自定义信号,携带一个int类型参数
};#endif // DIALOG_H
dialog.cpp// 包含对话框类的头文件
#include "dialog.h"/*** @brief Dialog类的构造函数* @param parent 父窗口指针,默认为nullptr*/
Dialog::Dialog(QWidget *parent): QDialog(parent), count(0) // 使用构造初始化列表初始化父类和计数器count
{// 设置对话框窗口大小为300x300像素resize(300, 300);// 创建一个显示"0"的按钮,并指定父对象为当前对话框btn = new QPushButton("0", this);// 将按钮移动到窗口中央位置// 计算方式:窗口宽度/2 - 按钮宽度/2,窗口高度/2 - 按钮高度/2btn->move(300/2 - btn->width()/2, 300/2 - btn->height()/2);// 连接按钮的clicked信号到btnClickedSlot槽函数// 当按钮被点击时,会触发btnClickedSlot函数connect(btn, SIGNAL(clicked()),this, SLOT(btnClickedSlot()));// 连接自定义信号countSignal到countSlot槽函数// 这是一个自连接,当countSignal信号发射时,会触发countSlot函数connect(this, SIGNAL(countSignal(int)),this, SLOT(countSlot(int)));
}/*** @brief 按钮点击的槽函数* 当按钮被点击时,发射带参数的自定义信号*/
void Dialog::btnClickedSlot()
{// 先递增count,然后发射countSignal信号,携带count值作为参数emit countSignal(++count);
}/*** @brief 处理计数信号的槽函数* @param count 接收到的计数值* 将计数值显示在按钮上*/
void Dialog::countSlot(int count)
{// 将整型count转换为QString类型QString text = QString::number(count);// 设置按钮文本为当前计数值btn->setText(text);
}/*** @brief Dialog类的析构函数* 释放动态分配的按钮对象*/
Dialog::~Dialog()
{// 删除按钮对象,释放内存delete btn;
}

1.2 Qt信号与槽的对应关系

1.2.1一对多关系

概念
同一个信号可以同时连接到多个槽
槽函数也是成员函数,可以直接调用
优化技巧: 可以把多个槽函数放在一个槽函数中调用,将一对多优化为一对一结构

dialog.h#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>          // 包含QDialog头文件,用于创建对话框窗口
#include <QPushButton>      // 包含QPushButton头文件,用于创建按钮控件
#include <QDebug>           // 包含QDebug头文件,用于调试输出// Dialog类继承自QDialog,表示一个对话框窗口
class Dialog : public QDialog
{Q_OBJECT  // 宏定义,启用Qt的元对象系统(信号槽机制等)public:Dialog(QWidget *parent = 0);  // 构造函数,parent参数指定父窗口~Dialog();                    // 析构函数private:QPushButton* btn;   // 私有成员变量:按钮1QPushButton* btn2;  // 私有成员变量:按钮2private slots:void mySlot1();  // 私有槽函数1(用于响应信号)void mySlot2();  // 私有槽函数2void mySlot3();  // 私有槽函数3
};#endif // DIALOG_H
dialog.cpp#include "dialog.h"// 对话框类的构造函数
Dialog::Dialog(QWidget *parent): QDialog(parent)  // 调用父类QDialog的构造函数
{resize(300,300);  // 设置对话框大小为300x300像素// 创建"一对多"按钮并设置位置btn = new QPushButton("一对多",this);btn->move(100,100);// 创建"一对一"按钮并设置位置btn2 = new QPushButton("一对一",this);btn2->move(100,150);// 信号与槽连接:一对多示例// 将btn的clicked()信号同时连接到mySlot1()和mySlot2()两个槽函数connect(btn,SIGNAL(clicked()),this,SLOT(mySlot1()));connect(btn,SIGNAL(clicked()),this,SLOT(mySlot2()));// 信号与槽连接:一对一示例// 将btn2的clicked()信号连接到mySlot3()槽函数connect(btn2,SIGNAL(clicked()),this,SLOT(mySlot3()));
}// 槽函数1:输出"A"
void Dialog::mySlot1()
{qDebug() << "A";
}// 槽函数2:输出"B"
void Dialog::mySlot2()
{qDebug() << "B";
}// 槽函数3:调用mySlot1和mySlot2
void Dialog::mySlot3()
{// 直接调用mySlot1和mySlot2mySlot1();mySlot2();
}// 析构函数:释放按钮对象
Dialog::~Dialog()
{delete btn;   // 释放"一对多"按钮delete btn2;  // 释放"一对一"按钮
}

1.2.2 多对一关系

概念
多个信号可以同时连接到一个槽
可以使用QObject::sender()函数判断当前是哪个发射者触发的槽函数
该函数返回发射者对象的地址(protected成员函数)

// 可以返回发射者对象的地址
QObject * QObject::sender() const        [protected]

示例代码

dialog.h#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>       // 包含QDialog头文件,用于创建对话框窗口
#include <QPushButton>   // 包含QPushButton头文件,用于创建按钮控件
#include <QDebug>        // 包含QDebug头文件,用于调试输出// Dialog类继承自QDialog,表示一个对话框窗口
class Dialog : public QDialog
{Q_OBJECT  // 必须的宏,用于支持Qt的信号和槽机制public:Dialog(QWidget *parent = 0);  // 构造函数,parent参数指定父窗口~Dialog();                    // 析构函数private:QPushButton* btn;   // 私有成员变量:按钮1QPushButton* btn2;  // 私有成员变量:按钮2private slots:void mySlot();      // 私有槽函数,用于处理按钮点击等信号
};#endif // DIALOG_H
dialog.cpp#include "dialog.h"// 对话框类的构造函数
Dialog::Dialog(QWidget *parent): QDialog(parent)  // 调用父类QDialog的构造函数
{resize(300,300);  // 设置对话框窗口大小为300x300像素// 创建第一个按钮,显示文本为"多对一",父对象为当前对话框btn = new QPushButton("多对一",this);btn->move(100,100);  // 将按钮移动到(100,100)位置// 创建第二个按钮,显示文本为"多对一",父对象为当前对话框btn2 = new QPushButton("多对一",this);btn2->move(100,150);  // 将按钮移动到(100,150)位置// 多对一信号槽连接// 将btn的clicked()信号连接到当前对象的mySlot()槽connect(btn,SIGNAL(clicked()),this,SLOT(mySlot()));// 将btn2的clicked()信号连接到当前对象的mySlot()槽connect(btn2,SIGNAL(clicked()),this,SLOT(mySlot()));
}// 自定义槽函数
void Dialog::mySlot()
{// 通过sender()判断是哪个按钮触发的信号if(sender() == btn)  // 如果是btn按钮{qDebug() << "随便输出个什么A";  // 输出调试信息A}else if(sender() == btn2)  // 如果是btn2按钮{qDebug() << "随便输出个什么B";  // 输出调试信息B}
}// 对话框类的析构函数
Dialog::~Dialog()
{delete btn;   // 释放btn按钮的内存delete btn2;  // 释放btn2按钮的内存
}

二、Designer

定义

Qt Designer 是 Qt 框架自带的可视化界面设计工具,用于快速创建 GUI 界面。

核心功能

通过拖拽组件设计界面,自动生成 ui 文件(XML 格式)。
与 Qt Creator 深度集成,双击 .ui 文件即可启动 Designer。

与代码的关系

Designer 的所有操作均可通过 C++ 代码实现,二者功能等价,但C++效率更高。
生成的 ui 文件会被编译为对应的 C++ 头文件(如 ui_xxx.h),供程序调用。
Designer 界面功能分布

组件工具箱:包含按钮、文本框等可拖拽控件。
属性编辑器:调整选中组件的属性(如尺寸、文本)。
信号/槽编辑器:可视化配置组件的事件响应。
布局工具:快速对齐和排列组件。

使用流程示例

  • 在 Qt Creator 中创建项目,添加 .ui 文件。
  • 双击 .ui 文件启动 Designer,拖拽组件设计界面。
  • 保存后,Qt 自动生成 XML 代码,编译时转换为 C++ 代码。
  • 在业务逻辑中通过 ui->组件名 访问界面元素。
    -工作界面

三、Layout 布局

3.1 基础用法

定义: 布局是一个透明的容器,内部组件按预设规则自动排列。
主要类型:
垂直布局:组件垂直排列(纵向)。
水平布局:组件水平排列(横向)。
两者除方向外,其他属性基本一致。
基础用法

常用属性:
间距(Spacing)、对齐方式(Alignment)、边距(Padding)等。
在这里插入图片描述


3.2 打破布局

作用: 移除外层布局但保留内部组件。
操作步骤:
选中目标布局。
点击工具栏的 “打破布局” 按钮。
注意: 直接删除布局会连带删除内部组件,需谨慎操作。
在这里插入图片描述


3.3 贴合窗口

作用:使最外层布局自适应窗口大小变化。
操作步骤:
选中窗口(或顶层布局)。
点击工具栏的 “贴合窗口” 按钮。
原理:在窗口内嵌套一个自动伸缩的布局。
取消方式:与打破布局相同(选中后点击“打破布局”)。
在这里插入图片描述


3.4 伸展器(Spacer)

功能: 在布局中填充空白区域,调整组件间距。
在这里插入图片描述
应用场景:
实现组件靠左/右/顶部/底部对齐。
动态分配剩余空间。
在这里插入图片描述


3.5 嵌套布局

用途:通过多层布局嵌套实现复杂界面设计。
关键点:
内层布局整体被视为外层布局的一个子组件。
可混合使用垂直、水平布局及伸展器。
在这里插入图片描述
在这里插入图片描述


四、ui指针

在这里插入图片描述


五、QWidget

QWidget 是 Qt 框架中所有用户界面组件的基类,提供了基础的属性和功能,其派生类(如按钮、窗口、标签等)会继承这些特性。以下是其常用属性和功能的整理:
在这里插入图片描述


六、QLabel 标签使用指南

基本特性
用途:仅用于文字和图片信息展示,不可交互操作。
图片资源管理规范
开发步骤:

准备图片

选择分辨率/大小适中的图片
命名要求:纯英文,不含中文字符
存放位置:项目工作目录

创建资源文件

右键项目 → “Add New File”
选择文件类型 → 命名资源文件 → 完成创建

管理资源文件

右键资源文件 → “Open in Editor”
首次使用需设置虚拟路径前缀
添加图片到资源文件中

使用资源

Designer中需先点击资源按钮
支持C++代码和Designer两种使用方式

代码操作图片
核心函数:

静态图片处理

// 构造函数(虚拟路径参数)
QPixmap::QPixmap(const QString &fileName)
// 图片缩放
// width: 目标宽度 | height: 目标高度
// aspectRatioMode: 缩放模式(默认忽略比例)
// transformMode: 插值方法(默认快速变换)
QPixmap QPixmap::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio,Qt::TransformationMode transformMode = Qt::FastTransformation) const

动态图片处理

// 动图构造函数(必须堆内存分配,参数为虚拟路径)
QMovie::QMovie(const QString &fileName)
// 开始播放
void QMovie::start() [slot]

代码示例
QLabel 代码压缩包


总结

本文全面解析了Qt框架中的信号槽机制与UI设计核心知识,首先详细讲解了信号槽的连接与断开、参数传递以及一对多/多对一的对应关系实现,通过计数器案例演示了信号传参的实际应用;接着系统介绍了Qt Designer可视化设计工具的功能布局、使用流程以及与代码的对应关系;然后深入剖析了布局管理的各类技巧,包括基础布局、打破布局、贴合窗口、伸展器使用和嵌套布局等实用方法;最后讲解了ui指针的访问方式和QWidget/QLabel组件的核心功能,特别提供了图片资源管理规范和动静态图片处理的代码示例,为开发者提供了从原理到实践的完整Qt开发指南。

相关文章:

Qt信号槽机制与UI设计完全指南:从基础原理到实战应用

目录 前言一、信号槽1.1 传参1.2 Qt信号与槽的对应关系1.2.1一对多关系1.2.2 多对一关系 二、Designer三、Layout 布局3.1 基础用法3.2 打破布局3.3 贴合窗口3.4 伸展器&#xff08;Spacer&#xff09;3.5 嵌套布局 四、ui指针五、QWidget六、QLabel 标签使用指南总结 前言 本…...

微信小程序van-dialog确认验证失败时阻止对话框的关闭

使用官方(Vant Weapp - 轻量、可靠的小程序 UI 组件库)的before-close&#xff1a; wxml&#xff1a; <van-dialog use-slot title"名称" show"{{ show }}" show-cancel-button bind:cancel"onClose" bind:confirm"getBackInfo"…...

嵌入式学习--江科大51单片机day7

我们在听课的过程中&#xff0c;可能对老师讲的有疑问&#xff0c;或者有些自己的理解&#xff0c;我们可以去问豆包&#xff0c;包括在写博客的时候我也是&#xff0c;不断去问豆包保证思考的正确性。&#xff08;有人感觉豆包很low啊&#xff0c;其实这些基础性的东西豆包一般…...

spark和hadoop之间的区别和联系

Spark和Hadoop的对比 1. 架构层面 Hadoop&#xff1a; HDFS&#xff08;分布式文件系统&#xff09;&#xff1a;Hadoop的核心组件之一&#xff0c;用于存储大规模数据。它将数据分散存储在多个节点上&#xff0c;通过冗余存储&#xff08;默认三副本&#xff09;来保证数据…...

antd mobile 点击 TabBar 切换页面

switchRoute 函数&#xff0c;navigate 点击的 path import { Button, TabBar } from "antd-mobile"; import { useEffect } from "react"; import { Outlet, useNavigate } from "react-router-dom"; import { useDispatch } from "react…...

20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图

20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图 2025/5/15 20:19 缘起&#xff1a;以前做的网线找不到了&#xff0c;那就再来一条吧。 引脚定义要从头来过&#xff1f;还好找到了一条。 开干&#xff01; 万用表一对/点&#xff0c;几…...

大语言模型 07 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机训练 预训练 监督微调

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

【学习心得】WSL2安装Ubuntu22.04

为了使用Docker desktop&#xff0c;所以我的win10需要安装一下wsl并且下载一个Ubuntu。默认Windows10/11是自带wsl的&#xff0c;你在进行下面操作的时候可以升级一下wsl --update 1、管理员身份打开cmd&#xff0c;输入命令查询所有可以下载的Linux版本 # 查看有哪些 Linux 发…...

人工智能、深度学习、机器学习的联系与区别

定义 人工智能&#xff08;AI - Artificial Intelligence&#xff09; &#xff1a;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它旨在让计算机能够像人类一样思考、学习和决策&#xff0c;涉及到诸如计算机视觉、自然语言处理…...

基于互联网和LabVIEW的多通道数据采集系统仿真设计

标题:基于互联网和LabVIEW的多通道数据采集系统仿真设计 内容:1.摘要 在当今科技飞速发展的背景下&#xff0c;多通道数据采集在众多领域有着广泛需求。本研究的目的是设计一个基于互联网和LabVIEW的多通道数据采集系统仿真方案。采用互联网技术实现数据的远程传输与共享&…...

【Android】Android 实现一个依赖注入的注解

Android 实现一个依赖注入的注解 &#x1f3af; 目标功能 自定义注解 Inject创建一个 Injector 类&#xff0c;用来扫描并注入对象支持 Activity 或其他类中的字段注入 &#x1f9e9; 步骤一&#xff1a;定义注解 import java.lang.annotation.ElementType; import java.lan…...

【Ansible基础】Ansible 核心组件深度解析:控制节点、受管节点、Inventory与Playbook

目录​​​​​​​ 1 Ansible架构概述 2 控制节点&#xff08;Control Node&#xff09;详解 2.1 控制节点定义与功能 2.2 控制节点配置文件 3 受管节点&#xff08;Managed Node&#xff09;详解 3.1 受管节点特点 3.2 受管节点准备工作 3.3 连接方式对比 4 Invento…...

数据库--处理模型(Processing Model)(二)

执行查询的方法有很多,接下来将介绍以更高效和更有效率的方式执行分析工作负载(在OLAP系统中)的不同技术,包括以下内容: 执行并行性(Execution Parallelism)执行引擎(Execution Engines)执行操作符输出(Execution Operator Output)中间数据表示(Intermediate Data …...

机器学习 day03

文章目录 前言一、特征降维1.特征选择2.主成分分析&#xff08;PCA&#xff09; 二、KNN算法三、模型的保存与加载 前言 通过今天的学习&#xff0c;我掌握了机器学习中的特征降维的概念以及用法&#xff0c;KNN算法的基本原理及用法&#xff0c;模型的保存和加载 一、特征降维…...

鸿蒙OSUniApp 制作简洁高效的标签云组件#三方框架 #Uniapp

UniApp 制作简洁高效的标签云组件 在移动端应用中&#xff0c;标签云&#xff08;Tag Cloud&#xff09;是一种常见的UI组件&#xff0c;它以视觉化的方式展示关键词或分类&#xff0c;帮助用户快速浏览和选择感兴趣的内容。本文将详细讲解如何在UniApp框架中实现一个简洁高效的…...

【测试】用例篇

目录 1、如何编写测试用例&#xff1a; 1.1、设计测试用例时&#xff1a;正向思维逆向思维发散思维 2.2、万能公式 2、设计测试用例的方法 2.1、基于需求设计方法 1&#xff09;等价类: 2&#xff09;边界类 3&#xff09;场景法 4&#xff09;正交表法 5&#xff09;…...

力扣-46.全排列

题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();void backtracking(i…...

【氮化镓】HfO2钝化优化GaN 器件性能

2025年,南洋理工大学的Pradip Dalapati等人在《Applied Surface Science》期刊发表了题为《Role of ex-situ HfO2 passivation to improve device performance and suppress X-ray-induced degradation characteristics of in-situ Si3N4/AlN/GaN MIS-HEMTs》的文章。该研究基…...

STL?list!!!

一、引言 之前我们一起完成了STL库中的vector&#xff0c;本期我们将一起完成list这一容器&#xff0c;在本期学习中&#xff0c;我们会更加加深对于模板的认识&#xff0c;让我们更加能感受到模板的魅力&#xff01; 二、list的介绍与相关接口 list是STL库中提供的一个链表容…...

2025.05.14华为机考笔试题-第一题-100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 优先级任务调度系统 问题描述 LYA公司的开发团队正在设计一个智能任务调度系统。该系统需要根据任务优先级动态调整执行顺序,以提高团队工作效率。系统需要支持以下三种操作:…...

紫外相机工作原理及可应用范围

紫外相机是一种利用紫外线&#xff08;UV&#xff09;波段进行成像的设备&#xff0c;紫外线可用于机器视觉应用中&#xff0c;以检测使用可见光无法检测到的特征&#xff0c;工业上使用最常见的紫外波长是365nm和395nm。紫外相机通常用于高分辨率视频显微镜、电晕检测、半导体…...

海外短剧H5/App开源系统搭建指南:多语言+国际支付+极速部署

在全球短视频与短剧内容消费热潮下&#xff0c;搭建一个支持多语言、集成国际支付且能快速部署的海外短剧平台&#xff0c;已成为内容创作者和运营者的核心需求。本文将结合行业前沿技术与开源方案&#xff0c;提供一套完整的系统搭建指南&#xff0c;助您高效实现全球化布局 …...

AWS EC2 微服务 金丝雀发布(Canary Release)方案

为什么需要实现金丝雀发布? 在当前项目的工程实践中, 已经有了充分的单元测试, 预发布环境测试, 但是还是会在线上环境出现非预期的情况, 导致线上事故, 因此, 为了提升服务质量, 需要线上能够有一个预验证的机制. 如何实现金丝雀发布? 使用AWS code deploy方案 AWS code…...

2025年5月华为H12-821新增题库带解析

IS-IS核心知识 四台路由器运行IS-IS且已经建立邻接关系&#xff0c;区域号和路由器的等级如图中标记&#xff0c;下列说法中正确的有? R2和R3都会产生ATT置位的Level-1的LSPR1没有R4产生的LSP&#xff0c;因此R1只通过缺省路由和R4通信R2和R3都会产生ATT置位的Leve1-2的LSPR2和…...

从单体架构到微服务:架构演进之路

引言&#xff1a;当“大货车”遇上“集装箱运输” 在软件开发领域&#xff0c;单体架构曾像一辆载满货物的大货车&#xff0c;将所有功能打包在一个应用中。但随着业务复杂度飙升&#xff0c;这辆“大货车”逐渐陷入泥潭&#xff1a;启动慢如蜗牛、故障波及全局、升级如履薄冰……...

从 Excel 到 Data.olllo:数据分析师的提效之路

背景&#xff1a;Excel 的能力边界 对许多数据分析师而言&#xff0c;Excel 是入门数据处理的第一工具。然而&#xff0c;随着业务数据量的增长&#xff0c;Excel 的一些固有限制逐渐显现&#xff1a; 操作容易出错&#xff0c;难以审计&#xff1b; 打开或操作百万行数据时&…...

Uniapp开发鸿蒙购物项目教程之样式选择器

大家好&#xff0c;今天依然为大家带来鸿蒙跨平台开发教程的分享&#xff0c;我们本系列的教程最终要做一个购物应用&#xff0c;通过这个项目为大家分享uniapp开发鸿蒙应用从配置开发环境到应用打包上架的完成过程。 昨天的文章实现了应用首页的轮播图&#xff0c;其中涉及到…...

AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命

一、四维立体监控网络技术架构 1. 人员行为监控 - 融合人脸识别、骨骼追踪与RFID工牌技术&#xff0c;身份识别准确率99.97% - 支持15米超距夜间红外监控&#xff08;精度0.01lux&#xff09; 2. 作业过程监控 - UWB厘米级定位技术&#xff08;误差&#xff1c;0.3米&…...

协作赋能-1-制造业生产流程重构

制造业生产流程重构——从“信息孤岛”到“全链协同” 在制造业的数字化转型浪潮中&#xff0c;一个看似矛盾的现象正在蔓延&#xff1a;企业部署了ERP、MES、PLM等管理系统&#xff0c;却仍未摆脱“纸质工单满天飞、跨部门扯皮不断”的困境。以汽车制造业为例&#xff0c;其…...

游戏行业DDoS攻击类型及防御分析

游戏行业作为DDoS攻击的高发领域&#xff0c;攻击类型复杂多样&#xff0c;结合多个来源的信息&#xff0c;以下是其主要攻击类型及特征分析&#xff1a; 1. 传统流量型DDoS攻击 UDP洪水攻击&#xff1a;通过大量UDP报文淹没服务器端口&#xff0c;消耗带宽资源&#xff0c;导…...

嵌入式学习的第二十一天-数据结构-双向链表

一、双向链表 1.定义 双向链表是在单链表的每个结点中&#xff0c;再设置一个指向其钱去节点的指针域。 typedef struct DulNode {ElemType date;struct DulNode *pri;//直接前驱指针sturct DulNode *next&#xff1b;//直接后继指针 }DulNode,*DuLinkList;2.双向链表的创建 …...

Python爬虫第21节- 基础图形验证码识别实战

目录 前言 一、学习目标 二、环境准备 2.1 安装依赖 2.2 验证安装 三、获取验证码图片 3.1 常见获取方式 3.2 图片格式要求 四、基础识别流程 4.1 基础流程 4.2 常见问题及解决方案 五、 图像预处理提升识别率 5.1 灰度化 5.2 二值化 5.3 自定义阈值二值化 5.4…...

【React全栈进阶】从组件设计到性能优化实战指南

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…...

基于EFISH-SCB-RK3576/SAIL-RK3576的消防机器人控制器技术方案‌

&#xff08;国产化替代J1900的应急救援智能化解决方案&#xff09; 一、硬件架构设计‌ ‌极端环境防护系统‌ ‌防爆耐高温设计‌&#xff1a; 采用陶瓷纤维复合装甲&#xff08;耐温1200℃持续1小时&#xff09;&#xff0c;通过GB 26784-2023消防设备防爆认证IP68防护等级…...

插件双更新:LeetCode 刷题支持正式上线,JetBrains IDE 插件持续升级!

为了让更多开发者在真实开发与算法练习中体验 MoonBit 的高效表达与编译性能&#xff0c;MoonBit 语言现已实现对 JetBrains 开发环境与 LeetCode 答题平台的全面支持&#xff01; 无论你是习惯用 IDE 编写项目的开发者&#xff0c;还是希望通过 LeetCode 刷题提升算法能力的程…...

编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC perl环境

Unix / Linux / macOS $ ./Configure $ make $ make test1、make Can‘t locate IPC/Cmd.pm in INC [ Downloads ] - /source/index.html https://www.openssl.org/source/ yum -y install perl-IPC-Cmd 2.make test Can’t locate Test/More.pm in INC perl环境 yum -…...

新型智慧园区技术架构深度解析:数字孪生与零碳科技的融合实践

&#x1f3ed;在杭州亚运村零碳园区&#xff0c;光伏板与氢燃料大巴构成的能源网络&#xff0c;正通过数字孪生技术实现智能调度。这不仅是格力电器与龙源电力在新能源领域的创新实践&#xff0c;更是智慧园区4.0时代的标杆案例。当AI算法开始接管能源调度&#xff0c;当BIM建模…...

2025全网首发:ComfyUI整合GPT-Image-1完全指南 - 8步实现AI图像创作革命

ComfyUI整合GPT-Image-1完全指南&#xff1a;8步实现AI图像创作革命【2025最新】 OpenAI最新发布的GPT-Image-1模型&#xff08;也就是ChatGPT-4o背后的图像生成技术&#xff09;已经通过API开放使用&#xff0c;而令人惊喜的是&#xff0c;ComfyUI已经第一时间提供了完整支持&…...

AWS Elastic Beanstalk控制台部署Spring极简工程

问题 上次通过EB CLI工具没有成功在AWS中国云部署成功&#xff0c;这次通过EB web控制台来部署。 步骤 接着上次部署失败的Spring工程&#xff1a;AWS Elastic Beanstalk部署极简Spring工程&#xff08;EB CLI失败版&#xff09;&#xff0c;准备好jar文件。 创建ec2私钥文…...

力扣-236.二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以…...

LeetCode 3337.字符串转换后的长度 II:矩阵快速幂(也没有想象中的那么高级啦)

【LetMeFly】3337.字符串转换后的长度 II&#xff1a;矩阵快速幂(也没有想象中的那么高级啦) 力扣题目链接&#xff1a;https://leetcode.cn/problems/total-characters-in-string-after-transformations-ii/ 给你一个由小写英文字母组成的字符串 s&#xff0c;一个整数 t 表…...

【iOS】源码阅读(四)——isa与类关联的原理

文章目录 前言OC对象本质探索clang探索对象本质objc_setProperty源码探索 cls与类的关联原理为什么说bits与cls为互斥关系isa的类型isa_t原理探索isa与类的关联 总结 前言 本篇文章主要是笔者在学习和理解类与isa的关联关系时所写的笔记。 OC对象本质探索 在学习和理解类与isa…...

elementUI 循环出来的表单,怎么做表单校验?

数据结构如下&#xff1a; diversionParamList: [ { length: null, positionNumber: null, value: null, } ] 思路&#xff1a;可根据 index 动态绑定 :props 属性值&#xff0c;校验规则写在:rules <div class"config-item" v-for"(item, index) in form.…...

蓝桥杯11届国B 约数

题目描述 定义阶乘 n!123⋅⋅⋅n。 请问 100! &#xff08;100 的阶乘&#xff09;有多少个正约数 100! 是所有从 1 到 100 的数的乘积&#xff0c;因此&#xff1a; 质数 j 在 100! 中的总指数 质数 j 在 1 中的指数 质数 j 在 2 中的指数 ... 质数 j 在 100 中的指数 …...

【iOS】alloc的实际流程

目录 前言 为什么不按源码流程调用&#xff1f; alloc的调用流程 前言 在之前的博客中我们有学习到过alloc的底层原理&#xff0c;沿着源码一步步找到了alloc的调用链——alloc—>_objc_rootAlloc—>callAlloc—>_objc_rootAllocWithZone—>_class_createInstan…...

Maven clean 提示文件 java.io.IOException

Maven clean 提示文件 java.io.IOException 问题背景问题分析&处理问题总结 问题背景 今天在一个功能开发结束之后&#xff0c;准备通过Maven实现打包操作&#xff0c;然后打包完成后部署到测试环境进行测试。在IDEA开发工具&#xff0c;点击 clean 时提示 Failed to dele…...

QT 使用QPdfWriter和QPainter绘制PDF文件

QT如何生产pdf文件&#xff0c;网上有许多文章介绍&#xff0c;我也是看了网上的文章&#xff0c;看他们的代码&#xff0c;自己琢磨琢磨&#xff0c;才有了本编博客&#xff1b; 其他什么就不详细说了&#xff0c;本篇博客介绍的QPdfWriter和QPainter绘制PDF文件&#xff1b;…...

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- Manus技术解密

解密企业级大模型智能体Agentic AI 关键技术&#xff1a;MCP、A2A、Reasoning LLMs- Manus技术解密 如果你从应用程序的角度讲&#xff0c;但是如果我们从模型的角度讲&#xff0c;我们必须让模型既具有这种思考的能力&#xff0c;也具有产出这种最佳的action的这种能力。而且…...

网络安全-等级保护(等保) 2-4 GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》-2019-05-10发布【现行】

################################################################################ 等级确定之后&#xff0c;需要根据不同的安全等级满足相关建设要求&#xff0c;《等级保护基础要求》明确了安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管…...

Ansys Zemax | 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追迹的批次处理

附件下载 联系工作人员获取附件 这篇文章会说明如何在 MATLAB 或 Python 中以 Zemax OpticStudio 应用程式界面 (ZOS-API)处理光线数据库(Ray Database, ZRD)档案&#xff0c;过程中我们将使用ZRDLoader.dll。本文提供了在 Matlab 中批次处理序列光线追迹(一般、归一化、偏振…...