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

【Qt】Item Widgets 多元素控件

Qt中提供的多元素控件有:

  • QListWidget
  • QListView
  • QTableWidget
  • QTableView
  • QTreeWidget
  • QTreeView

上述控件分为Widget和View,其区别如下:

以QTableWidget和QTableView为例

  • QTableView是基于MVC(Model-View-Controller)设计的控件。QTableView自身不持有数据,只是实现界面效果。使用QTableView需要用户创建一个Model对象(比如QStandarModel),并且把Model和QTableView关联起来,后续修改Model中的恶数据就会影响QTableView的显示;修改QTableView也会影响Model中的数据(双向绑定)
  • QTableWidget则是QTableView的子类,对Model进行了封装,不需要我们手动创建Model对象,直接往QTableWidget中添加数据即可

目录

QListWidget

QListWidgetItem

QTableWidget

QTableWidgetItem

QTreeWidget

QTreeWidgetItem


QListWidget

QListWidget类是用于显示条目列表的控件。每个条目可以包含文本和可选的图标


核心属性 

属性说明
currentRow当前被选中的是第几行,下标从0开始
count当前有多少行条目
sortingEnabled是否允许排序
isWrapping是否允许换行
itemAlignment元素的对齐方式
selectRectVisible被选中的元素矩形是否可见
spacing元素之间的间隔

核心方法 

方法说明

addItem(const QString &label)

addItem(QListWidgetItem *item)

在列表末尾添加元素
currentItem()获取当前选中的条目,返回值是QListWidgetItem*
setCurrentItem(QListWidgetItem *item)设置选中哪个元素
setCurrentRow(int row)设置选中第几行的条目

insertItem(const QString& label, int row)

insertItem(QListWidgetItem *item, int row)

指定行插入元素,插入的元素顶替原先的位置

例如row = 0,那么新插入的元素下标将会为0

item(int row)获取第row行的条目,返回值为QListWidgetItem *
takeItem(int row)删除指定行的条目,返回值为QListWidgetItem *,被删除的条目

核心信号

信号说明

currentItemChanged(QListWidgetItem *current, QListWidgetItem *old)

选中不同元素时会触发,参数是当前选中的元素和之前的元素

注意:在QListWidget最开始展示时就会触发该信号,但此时没有old,所以编写相应的槽函数需要对指针判空

currentRowChanged(int)选中不同元素时触发,参数是当前选中的行数
itemClicked(QListWidgetItem *item)点击某个元素时触发
itemDoubleClicked(QListWidgetItem *item)双击某个元素时触发
itemActivated(QListWidgetItem *item)某个元素被激活,点击和双击都会触发该信号
itemEntered(QListWidgetItem *item)鼠标进入元素时触发
itemChanged(QListWidgetItem *item)条目的内容被改变时触发

QListWidgetItem

XXItem是用于显示界面中单个条目的类,包含了条目的数据和显示设置,比如文本、图标等

这些Item本身并不是Model,更类似于View或是对Model数据的一种显示

核心方法

方法说明
setFont设置字体
setIcon设置图标
setHidden设置隐藏
setSizeHint设置尺寸
setSelected设置是否选中
setText设置文本
setTextAlignment设置文本对齐方式

代码示例:使用QListWidget展示语言,QLineEdit输入新增语言,一个新增按钮和删除按钮

1. 使用Qt Designer添加所需控件

2. 编写widget.cpp,在构造函数中添加初始元素

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//初始化添加几个元素ui->listWidget->addItem("C++");ui->listWidget->addItem("Java");ui->listWidget->addItem("Python");//设置提示词ui->lineEdit->setPlaceholderText("请输入要添加的元素");
}

3. 编写按钮的槽函数

//增加条目
void Widget::on_pushButton_add_clicked()
{//获取输入框的文本const QString &text = ui->lineEdit->text();if(text == nullptr) return;//获取当前选中的下标int row = ui->listWidget->currentRow();//将新条目插入到选中条目之后,若没选中,index = 0,为头插ui->listWidget->insertItem(row, text);
}
//删除条目
void Widget::on_pushButton_delete_clicked()
{//另一种获取选中元素的方法auto *item = ui->listWidget->currentItem();if(item == nullptr) return;int row = ui->listWidget->row(item);ui->listWidget->takeItem(row);
}

QTableWidget

QTableWidget类用于显示二维表格数据


核心方法

方法说明
item(int row, int column)通过指定行列获取元素,返回值为QTableWidgetItem *
setItem(int row, int column, QTableWidget *item)通过指定行列,设置表格中的元素
currentItem()返回被选中的元素,返回值为QTableWidgetItem *
currentRow()返回被选中元素的行号,从0开始
currentColumn()返回被选中元素的列号,从0开始
row(QTableWidgetItem *item) 获取指定 item 的行号
column(QTableWidgetItem *item)获取指定 item 的列号
rowCount()获取当前列表有几行
columnCount()获取当前列表有几列
insertRow(int row)

在第 row 行插入新行

若 insertRow(0),则新插入的行为第0行

insertColumn(int column)在第 column 列插入新列
removeRow(int row)删除第 row 行
removeColumn(int column)删除第 column 列
setHorizontalHeaderItem(int column, QTableWidgetItem *item)设置指定列的表头,即列属性
setVerticalHeader(int row, QTableWidgetItem *item)设置指定行的表头,即行属性
setHorizontalHeaderLabels(QStringList &labels)通过QStringList快速设置列属性
setVerticalHeaderLabels(QStringList &labels)通过QStringList快速设置行属性

核心信号

信号说明
cellClicked(int row, int column)点击单元格时触发,参数是行号和列号
cellDoubleClicked(int row, int column)双击单元格时触发,参数是行号和列号
cellEntered(int row, int column)鼠标进入单元格时触发,参数是行号和列号
currentCellChanged(int row, int column, int previousRow, int previousColumn)选中的单元格切换时触发,前两个参数是现在选中单元格的行列号,后两个参数是先前选中的单元格的行列号

QTableWidgetItem

QTableWidgetItem是二维单元格中表示和管理单元格数据的类,允许开发者在表格中操作和显示文本、图标和其他数据

核心方法

方法大致与QListWidgetItem相同,多了行列相关的方法

方法说明
row()获取该元素的行号
column()获取该元素的列号
setText(const QString &)设置文本
setTextAlignment(int)设置文本对齐方式
setIcon(const QIcon &)设置图标
setSelected(bool)设置被选中
setSizeHints(cinst QSize &)设置尺寸
setFont(const QFont &)设置字体

代码示例:简易学生成绩表

1. 使用Qt Designer添加所需控件

2. 编写widget.cpp,在构造函数中初始化相关元素 

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置提示词ui->lineEdit->setPlaceholderText("请输入新增列名");//插入4行3列for(int i = 0; i < 4; ++i)//4行ui->tableWidget->insertRow(i);for(int i = 0; i < 3; ++i)//3列ui->tableWidget->insertColumn(i);//设置列名QStringList colName = {"学号", "姓名", "成绩"};ui->tableWidget->setHorizontalHeaderLabels(colName);//初始数据ui->tableWidget->setItem(0, 0, new QTableWidgetItem("1001"));ui->tableWidget->setItem(0, 1, new QTableWidgetItem("张三"));ui->tableWidget->setItem(0, 2, new QTableWidgetItem("83"));ui->tableWidget->setItem(1, 0, new QTableWidgetItem("1002"));ui->tableWidget->setItem(1, 1, new QTableWidgetItem("小明"));ui->tableWidget->setItem(1, 2, new QTableWidgetItem("95"));ui->tableWidget->setItem(2, 0, new QTableWidgetItem("1003"));ui->tableWidget->setItem(2, 1, new QTableWidgetItem("小华"));ui->tableWidget->setItem(2, 2, new QTableWidgetItem("79"));
}

3. 编写按钮的槽函数

//新增一行
void Widget::on_pushButton_clicked()
{//尾插int row = ui->tableWidget->rowCount();ui->tableWidget->insertRow(row);
}
//新增一列,同时设置列名
void Widget::on_pushButton_2_clicked()
{const QString &text = ui->lineEdit->text();if(text == nullptr) return;//尾插一列并设置列名int col = ui->tableWidget->columnCount();ui->tableWidget->insertColumn(col);ui->tableWidget->setHorizontalHeaderItem(col, new QTableWidgetItem(text));
}
//删除一行
void Widget::on_pushButton_3_clicked()
{int row = ui->tableWidget->currentRow();ui->tableWidget->removeRow(row);
}
//删除一列
void Widget::on_pushButton_4_clicked()
{int col = ui->tableWidget->currentColumn();ui->tableWidget->removeColumn(col);
}

程序效果如下:

默认情况下,单元格的内容可以直接编辑。如果不想让用户编辑,可以设置

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

QTreeWidget

 QTreeWidget类用于显示树形结构,集成了数据模型和视图的功能

QTreeWidget不同于往常的多叉树,Qt隐藏了该多叉树的根节点,我们只能访问从根节点以下的节点。

根节点以下第一层是 topLevelItem ,通过QTreeWidget添加;再往下的节点t通过 QTreeWidgetItem 的child指针连接


核心方法

方法说明
clear()清空所有子节点
addTopLevelItem(QTreeWidgetItem *item)新增顶层节点
topLevelItem(int index)获取指定下标的顶层节点,返回值是 QTreeWidgetItem *
topLevelItemCount()获取顶层节点的个数
indexOfTopLevelItem(QTreeWidgetItem *item)查询指定节点在顶层节点中的下标
takeTopLevelItem(int index)通过下标删除顶层节点,返回值是 QTreeWidgetItem * 表示被删除的节点
currentItem()获取当前选中的节点,返回值是 QTreeWidgetItem *
setCurrentItem(QTreeWidgetItem *item)设置选中的节点
setExpanded(bool)

展开/关闭节点

true为展开,false为关闭

setHeaderLabel(const QString &text)设置QTreeWidget的header名称,如上述样例的"动物"

核心信号

信号说明
currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *old)切换选中元素时触发
itemClicked(QTreeWidgetItem *item, int col)点击元素时触发
itemDoubleClicked(QTreeWidgetItem *item, int col)双击元素时触发
itemEntered(QTreeWidgetItem *item, int col)鼠标进入时触发
itemExpanded(QTreeWidgetItem *item)元素被展开时触发
itemCollapsend(QTreeWidgetItem *item)元素被折叠时触发

QTreeWidgetItem

QTreeWidgetItem类用于表示树状结构中的每个节点,可显示文本和图标等元素

QTreeWidget中顶层元素和子元素其实都是QTreeWidgetItem,只是调用的接口不同,顶层元素通过QTreeWidget添加、删除、管理,子元素由顶层元素管理。

核心属性

属性说明
text持有的文本
textAlignment文本对齐方式
icon持有的图标
font文本字体
hidden是否隐藏
disabled是否禁用
expand是否展开
sizeHint尺寸大小
selected是否选中
parent父亲节点

核心方法

方法说明
addChild(QTreeWidgetItem *child)新增子节点
childCount()子节点的个数
child(int index)获取指定下标的子节点,返回值是QTreeWidgetItem *
takeChild(int index)通过下标删除对应子节点
removeChild(QTreeWidgetItem *child)通过指针删除对应子节点
parent()获取父节点,返回值是QTreeWidgetItem *

代码示例:使用QTreeWidget 展示动物种类

1. 通过Qt Designer添加所需控件

2. 编写widget.cpp,通过构造函数初始化相关控件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setPlaceholderText("请输入要添加的元素");//设置根节点名称ui->treeWidget->setHeaderLabel("动物");//添加顶层元素QTreeWidgetItem *item_cat = new QTreeWidgetItem(ui->treeWidget);item_cat->setText(0, "猫");ui->treeWidget->addTopLevelItem(item_cat);QTreeWidgetItem *item_dog = new QTreeWidgetItem(ui->treeWidget);item_dog->setText(0, "狗");ui->treeWidget->addTopLevelItem(item_dog);QTreeWidgetItem *item_bird = new QTreeWidgetItem(ui->treeWidget);item_bird->setText(0, "鸟");ui->treeWidget->addTopLevelItem(item_bird);
}

3. 编写按钮的槽函数

//添加顶层节点
void Widget::on_pushButton_clicked()
{const QString &text = ui->lineEdit->text();if(text.isEmpty()) return;//构造新节点并链入QTreeWidgetQTreeWidgetItem *newColumn = new QTreeWidgetItem(ui->treeWidget);newColumn->setText(0, text);ui->treeWidget->addTopLevelItem(newColumn);
}
//添加非顶层节点
void Widget::on_pushButton_2_clicked()
{const QString &text = ui->lineEdit->text();if(text.isEmpty())  return;//获取父亲节点QTreeWidgetItem *parent = ui->treeWidget->currentItem();if(parent == nullptr)   return;//构造新节点并链入parentQTreeWidgetItem *newColumn = new QTreeWidgetItem(parent);newColumn->setText(0, text);parent->addChild(newColumn);//添加完后直接展开parent->setExpanded(true);
}
//删除子项
void Widget::on_pushButton_3_clicked()
{QTreeWidgetItem *curItem = ui->treeWidget->currentItem();QTreeWidgetItem *parent = curItem->parent();if(parent == nullptr){//顶层元素int index = ui->treeWidget->indexOfTopLevelItem(curItem);ui->treeWidget->takeTopLevelItem(index);}elseparent->removeChild(curItem);//非顶层元素
}

结束语

感谢你的阅读,如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要   

相关文章:

【Qt】Item Widgets 多元素控件

Qt中提供的多元素控件有&#xff1a; QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView 上述控件分为Widget和View&#xff0c;其区别如下&#xff1a; 以QTableWidget和QTableView为例 QTableView是基于MVC(Model-View-Controller)设计的控件。QTableView自身…...

sharded_inference_engine:MLXDynamicShardInferenceEngine;step

目录 sharded_inference_engine:MLXDynamicShardInferenceEngine 类属性 方法 __init__(self) async def infer_prompt(self, shard: Shard, prompt: str, inference_state: Optional[str] = None) -> (np.ndarray, str, bool) async def infer_tensor(self, shard: …...

JAVA开发学习-day21

JAVA开发学习-day21 1. 删除表单数据 根据ElementUI的官方组件指南&#xff0c;为表单每列的数据添加删除按钮 <el-table :data"tableData" style"width: 100%"><el-table-column prop"id" label"ID" width"180"…...

Python的安装环境以及应用

1.环境python2&#xff0c;Python 最新安装3.12可以使用源码安装 查看安装包 [rootpython001 ~]# yum list installed | grep epel 3[rootpython001 ~]# yum list installed | grep python [rootpython001 ~]# yum -y install python3 安装python3 查看版本 [root…...

TabLayout使用以及自定义tab标签

<?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tool…...

第二十节、有限状态机和抽象类多态

一、抽象类 挂载到动画器上的就是继承抽象类代码 1、使用onenable周期函数启用 2、在每一个周期函数中对抽象类进行调用 3、隐藏公开的变量...

SQL注入实例(sqli-labs/less-23)

0、初始网页 1、闭合方式判断 闭合符号为单引号&#xff0c;通过测试发现过滤了注释&#xff0c;所以直接闭合 2、确定查询表的列数 确定查询表的列数为3列 ?id1 order by 3 3、确定回显位置 回显位置为第二列和第三列 ?id-1 union select 1,2,3 4、查看当前登录和数据…...

3.Redis数据类型(二)

LIST List 是一个简单的双向链表&#xff0c;支持从两端进行插入和删除操作。 常用命令&#xff1a; lpush/rpush/lrange lpush 插入一个或多个元素到列表的左端。 rpush 插入一个或多个元素到列表的右端。 lrange key start stop 获取元素&#xff08;前闭后闭&#xff0…...

JavaWeb系列十一: Web 开发会话技术Session

Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 …...

k8s中yaml文件的编写

目录 1.编写pod.yaml 2.编写deploment.yaml 3.编写service.yaml关联创建的pod 4.总结获取K8S资源配置清单文件模板方法 5.补充 1.编写pod.yaml vim demo1-pod.yaml apiVersion: v1 kind: Pod metadata:name: scj-podnamespace: xy101labels:app: nginxmylove: tangjunmyc…...

打卡第37天------动态规划

加油!不要放弃,那些冲进清北复交的高材生的水平真不是盖的,名不虚传,有实力的全能选手。我在刷题的过程中不得不表达一下对他们的钦佩。 这里在遍历顺序上可就有说法了。 如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for…...

openfeign本地试用

目的&#xff1a;在本地搭建一个简单的openfeign使用场景&#xff0c;测试查询、新增等功能 平台&#xff1a;win10 技术栈&#xff1a;Springboot, SpringCloud, Nacos, Mybatis, MySql, Logback 框架作用说明&#xff1a; Nacos用于服务注册&#xff0c;将provider应用注…...

数据库|SQLServer数据库:查询函数(SUM、COUNT、MAX、MIN、AVG)的使用

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 日拱一卒&#xff0c;进一寸有进一寸的欢喜&#xff0c;本节学习数据库查询函数的使用。 以下为学习笔记。 01 求和 SUM&#xff1a;对某一字段列进行求和运算&#xff1b; 示例&#xff1a; 对账号表Account的文章…...

简单Qt贪吃蛇项目

目录 先看效果 项目介绍 界面一&#xff1a;游戏大厅界面 界面二&#xff1a;关卡选择界面​编辑 界面三&#xff1a;游戏界面 游戏大厅页面 游戏关卡选择页面 游戏房间页面 封装贪吃蛇数据结构 初始化游戏房间界面 设置窗口大小、标题、图标等 蛇的移动 初始化贪…...

画菱形(曼哈顿距离)

输入一个奇数 nn&#xff0c;输出一个由 * 构成的 nn 阶实心菱形。 输入格式 一个奇数 nn。 输出格式 输出一个由 * 构成的 nn 阶实心菱形。 具体格式参照输出样例。 数据范围 1≤n≤991≤n≤99 输入样例&#xff1a; 5输出样例&#xff1a; * *** ******** * #i…...

CSP初赛知识点讲解(六)

CSP初赛知识点讲解&#xff08;六&#xff09; 运算表达式中缀变后缀表达式求值前缀表达式 例题训练&#xff08;八&#xff09; 运算表达式 运算表达式有三种&#xff0c;前缀表达式&#xff0c;中缀表达式&#xff0c;后缀表达式&#xff0c;我们常用的是中缀表达式&#xf…...

linux rocky 9.2系统安装mysql-wsrep-8.4.2-26.20-linux-x86_64.tar.gz二进制包

1.环境准备&#xff0c; ①装好Rocky linux9.2系统&#xff0c;设置好IP nmcli con mod ens160 ipv4.addresses 192.168.0.106/24 nmcli con mod ens160 ipv4.gateway 192.168.0.2 nmcli con mod ens160 ipv4.dns 114.114.114.114 nmcli con up ens160 nmcli con mod ens…...

QT实现上传服务器功能

代码如下所示&#xff1a; void UploadZipFileToServer(const QString& strPath) {m_pFile new QFile(strPath);// 创建HTTP多部份请求QHttpMultiPart *multiPart new QHttpMultiPart(QHttpMultiPart::FormDataType);QHttpPart keyPart;keyPart.setHeader(QNetworkReques…...

元岳食堂采购供应链系统-智慧食堂数据化解决方案

随着社会的发展和科技的进步&#xff0c;在数字化浪潮的推动下&#xff0c;智慧食堂供应链系统逐渐成为食堂管理的重要工具。在此背景下&#xff0c;元岳食堂采购供应链系统应运而生&#xff0c;该系统通过其独特的数字化和自动化功能&#xff0c;能够对食堂的采购、储存、配送…...

基于Java+SpringBoot+Vue的影城管理系统

基于JavaSpringBootVue的影城管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽…...

如何高效部署Label Studio数据标注工具:专业配置实战指南

如何高效部署Label Studio数据标注工具&#xff1a;专业配置实战指南 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-studio …...

多维创新打造强泛化智能体模型,LongCat-Flash-Thinking-2601技术报告

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

企业级微软产品激活管理:KMS_VL_ALL_AIO的技术实践与战略价值

企业级微软产品激活管理&#xff1a;KMS_VL_ALL_AIO的技术实践与战略价值 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 1. 企业激活困境与破局思路 核心价值&#xff1a;揭示企业在软件激活管…...

LTspice2Matlab:如何实现电路仿真数据到MATLAB的无缝迁移终极方案?

LTspice2Matlab&#xff1a;如何实现电路仿真数据到MATLAB的无缝迁移终极方案&#xff1f; 【免费下载链接】ltspice2matlab LTspice2Matlab - Import LTspice data into MATLAB 项目地址: https://gitcode.com/gh_mirrors/lt/ltspice2matlab 电子工程师的数据孤岛困境&…...

NormalMap-Online终极指南:在浏览器中免费生成专业法线贴图

NormalMap-Online终极指南&#xff1a;在浏览器中免费生成专业法线贴图 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 还在为3D模型缺乏表面细节而烦恼吗&#xff1f;NormalMap-Online是…...

开源鸿蒙赋能水务智能化,IPC3528水务鸿蒙网关

近深圳五指耙水厂正式完成鸿蒙化智能升级&#xff0c;成为全国首座鸿蒙智慧水厂&#xff0c;标志开源鸿蒙生态在智慧水务领域实现落地&#xff0c;为开源鸿蒙产业生态拓展写下关键一笔。触觉智能-水务鸿蒙硬件方案触觉智能基于RK3568平台的IDO-IPC3528工控机&#xff0c;对鸿蒙…...

零基础小白必看!PyTorch 2.6 镜像一键部署,开箱即用

零基础小白必看&#xff01;PyTorch 2.6 镜像一键部署&#xff0c;开箱即用 1. 为什么选择PyTorch 2.6镜像&#xff1f; PyTorch作为当前最流行的深度学习框架之一&#xff0c;其2.6版本带来了多项性能优化和新特性。但对于初学者来说&#xff0c;手动配置PyTorch环境往往是个…...

Qwen3-14B私有部署镜像实战:基于AI Agent的自动化工作流设计

Qwen3-14B私有部署镜像实战&#xff1a;基于AI Agent的自动化工作流设计 1. 为什么需要AI Agent 想象一下&#xff0c;每天早上打开电脑&#xff0c;你的数字助手已经自动整理好当天的会议纪要、生成了数据分析报告、回复了常规邮件&#xff0c;甚至根据你的日程安排调整了工…...

AIGlasses OS Pro保姆级教程:从环境配置到四大模式实战体验

AIGlasses OS Pro保姆级教程&#xff1a;从环境配置到四大模式实战体验 1. 系统概述与核心价值 AIGlasses OS Pro是一款专为智能眼镜设计的本地化视觉辅助系统&#xff0c;它巧妙融合了YOLO11目标检测与MediaPipe骨骼识别两大引擎。与市面上依赖云服务的方案不同&#xff0c;…...

comsol实能带建模、与Matlab能带数据后处理 文献复现---“周期嵌套声学黑洞结构的复...

comsol实能带建模、与Matlab能带数据后处理 文献复现---“周期嵌套声学黑洞结构的复能带和凋落波研究”-“二维声学黑洞声子晶体的宽频振动抑制”-“ Broadband vibration mitigation using a two-dimensional acoustic black hole phononic crystal” 包括comsol实能带模型、M…...