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

【QT】 QT中的列表框-横向列表框-树状列表框-表格列表框

QT中的列表框-横向列表框-树状列表框-表格列表框

  • 1.横向列表框
    • (1)主要方法
    • (2)信号
    • (3) 示例代码1:
    • (4) 现象:
    • (5) 示例代码2:加载目录项在横向列表框显示
    • (6) 现象:
  • 2.树状列表框 QTreeWidget
    • (1)使用思路
    • (2)信号
    • (3)常用的接口函数
    • (4) 示例代码:
    • (5) 现象
  • 3.表格列表框 QTableWidget
    • (1)使用思路
    • (2)常用的接口函数
    • (3)示例代码
    • (4)现象

在UI设计器种的列表框
在这里插入图片描述

1.横向列表框

QListWidget 表示横向列表框
QListWidgetItem 表示列表项
QModelIndex 表示列表项索引

(1)主要方法

第一个:往列表框中添加列表项void QListWidget::addItem(const QString &label)  参数: label --》要添加的列表项void QListWidget::addItem(QListWidgetItem *item)参数: item --》要添加的列表项QListWidgetItem::QListWidgetItem(const QIcon &icon, const QString &text)参数: icon --》要显示的图标text --》要添加的文本内容QIcon::QIcon(const QString &fileName)参数:fileName --》根据图标的路径名构造一个QIcon对象
第二个:返回列表项中的文本内容QString QListWidgetItem::text() const
第三个:查找列表项QList<QListWidgetItem *> QListWidget::findItems(const QString &text, Qt::MatchFlags flags) const返回值:QList容器,里面存放了所有匹配的列表项参数:text --》要查找的列表项flags --》Qt::MatchContains  //搜索所有匹配的列表项
第四个:删除列表项QListWidgetItem *QListWidget::takeItem(int row)参数: row --》要删除的列表项的索引号,从0开始计算
第五个:通过列表项的文本内容得到索引号int QListWidget::row(const QListWidgetItem *item) const通过索引号得到列表项的文本内容  QListWidgetItem *QListWidget::item(int row) const

(2)信号

单击列表项
[signal] void QListWidget::itemClicked(QListWidgetItem *item)参数: item --》单击的列表项通过text()方法可以获取列表项中的内容QString QListWidgetItem::text() const
[signal] void QAbstractItemView::clicked(const QModelIndex &index)  参数: index --》单击的列表项索引通过row()方法可以获取列表项的索引
双击列表项
[signal] void QAbstractItemView::doubleclicked(const QModelIndex &index)  
[signal] void QListWidget::itemDoubleClicked(QListWidgetItem *item)

(3) 示例代码1:

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QListWidgetItem>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_listWidget_itemClicked(QListWidgetItem *item);void on_listWidget_clicked(const QModelIndex &index);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//往横向列表框中添加列表项ui->listWidget->addItem("王0");ui->listWidget->addItem("王1");ui->listWidget->addItem("王2");ui->listWidget->addItem("王3");ui->listWidget->addItem("王4");ui->listWidget->addItem("王5");ui->listWidget->addItem("王6");ui->listWidget->addItem("王7");ui->listWidget->addItem("王8");ui->listWidget->addItem("王9");//往横向列表框中添加列表项(带图标)QListWidgetItem(const QIcon &icon, const QString &text)QIcon icon1("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/1.png");QListWidgetItem *item1=new QListWidgetItem(icon1,"王10");ui->listWidget->addItem(item1);//设置字体QFont myfont("楷体",20);ui->listWidget->setFont(myfont);//设置图标大小QSize size1(28,28);ui->listWidget->setIconSize(size1);//查找列表项QList<QListWidgetItem *> itemlist=ui->listWidget->findItems("王1",Qt::MatchContains); //查找所有的王1//QList<QListWidgetItem *> itemlist=ui->listWidget->findItems("王1",Qt::MatchStartsWith); //查找第一个符合要求的王1for(auto x:itemlist)qDebug()<<"找到了: "<<x->text();
}Widget::~Widget()
{delete ui;
}// 第一种:单击列表项
void Widget::on_listWidget_itemClicked(QListWidgetItem *item)
{
//    qDebug()<<"单击的是: "<<item->text();
//    item->setTextAlignment(Qt::AlignRight);//删除列表项
//    ui->listWidget->takeItem(ui->listWidget->row(item));
}// 第二种:单击列表项
void Widget::on_listWidget_clicked(const QModelIndex &index)
{qDebug()<<"单击的列表项索引号(行号): "<<index.row();
}

(4) 现象:

在这里插入图片描述

(5) 示例代码2:加载目录项在横向列表框显示

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QListWidgetItem>
#include <QDebug>
#include <QFileInfo>
#include <QFileDialog>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void on_listWidget_clicked(const QModelIndex &index);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//单击列表项
void Widget::on_listWidget_clicked(const QModelIndex &index)
{qDebug()<<"单击的列表项索引号(行号): "<<index.row();
}//加载目录
void Widget::on_pushButton_clicked()
{// 弹出目录对话框 获取打开的目录路径QString dirpath=QFileDialog::getExistingDirectory(this);qDebug()<< "dirpath:" << dirpath;//创建目录对象QDir mydir(dirpath);//遍历目录QStringList filelist=mydir.entryList();//遍历列表项for(int i=0; i<filelist.size(); i++){if(filelist.at(i)=="." || filelist.at(i)=="..")continue;//拼接得到绝对路径QString allpath=QString("%1/%2").arg(dirpath).arg(filelist.at(i));//判断文件类型QFileInfo info(allpath);if(info.isDir()) //是目录{QIcon icon1("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/文件夹.png");QListWidgetItem *item1=new QListWidgetItem(icon1,allpath);ui->listWidget->addItem(item1);//设置图标大小QSize size1(28,28);ui->listWidget->setIconSize(size1);}else{QIcon icon1("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/文件.png");QListWidgetItem *item1=new QListWidgetItem(icon1,allpath);ui->listWidget->addItem(item1);//设置图标大小QSize size1(28,28);ui->listWidget->setIconSize(size1);}}//设置字体QFont myfont("楷体",24);ui->listWidget->setFont(myfont);
}

(6) 现象:

选择【加载目录】–>确定后将所选择的目录显示在横向列表框种
在这里插入图片描述

2.树状列表框 QTreeWidget

(1)使用思路

第一步:设置水平头 --》树状列表框的树根
void QTreeWidget::setHeaderLabel(const QString &label)
参数:label --》要添加的水平头
第二步:添加顶层节点
void QTreeWidget::addTopLevelItem(QTreeWidgetItem *item)
参数:item --》要添加的顶层节点
QTreeWidgetItem(const QStringList &strings)
参数:strings --》要添加的字符串
第三步:添加子节点
void QTreeWidgetItem::addChild(QTreeWidgetItem *child)
参数:child --》要添加的子节点

(2)信号

跟横向列表框类似,请参见横向列表框信号的介绍

(3)常用的接口函数

第一个:根据列号得到对应列表项文本内容QString QTreeWidgetItem::text(int column) const
第二个:查找列表项QList<QTreeWidgetItem *> QTreeWidget::findItems(const QString &text,Qt::MatchFlags flags)参数:text --》要查找的列表项flags --》打算如何查找
第三个:删除列表项
//删除子节点
void QTreeWidgetItem::removeChild(QTreeWidgetItem *child)参数:child --》要删除的子节点
QTreeWidgetItem *QTreeWidgetItem::takeChild(int index)参数:index --》要删除的子节点索引号,从0开始
//删除顶层节点
ui->treeWidget->takeTopLevelItem(0);  //参数是顶层节点的索引参数:index --》索引号从0开始第一个顶层节点  0第二个顶层节点  1

(4) 示例代码:

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTreeWidgetItem>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置水平头ui->treeWidget->setHeaderLabel("QQ好友");// 设置顶层节点--》分组的标题// 写法1:传统的写法// QStringList list1;// list1.append("幼儿园同学");// 写法2:简洁的写法// QStringList list1;// list1<<"幼儿园同学"; //operator<<// 写法3:C++的匿名对象--》没有名字的对象(传递实参的时候用到匿名对象)QTreeWidgetItem *item1=new QTreeWidgetItem(QStringList()<<"幼儿园同学");ui->treeWidget->addTopLevelItem(item1);QTreeWidgetItem *item2=new QTreeWidgetItem(QStringList()<<"小学同学");ui->treeWidget->addTopLevelItem(item2);QTreeWidgetItem *item3=new QTreeWidgetItem(QStringList()<<"中学同学");ui->treeWidget->addTopLevelItem(item3);//添加子节点QTreeWidgetItem *item10=new QTreeWidgetItem(QStringList()<<"张1");QTreeWidgetItem *item11=new QTreeWidgetItem(QStringList()<<"张2");QTreeWidgetItem *item12=new QTreeWidgetItem(QStringList()<<"张3");//给子节点设置图标item10->setIcon(0,QIcon("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/头像1.png"));item11->setIcon(0,QIcon("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/头像2.png"));item12->setIcon(0,QIcon("C:/Users/xxx/Desktop/vm_shared/code/QT_proj/res/头像3.png"));item1->addChild(item10);item1->addChild(item11);item1->addChild(item12);
}Widget::~Widget()
{delete ui;
}void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{qDebug()<<"单击的列表项是:"<<item->text(column);//无非就两种情况:一种item是顶层节点//              二种item是个子节点//删除幼儿园同学这个顶层节点对应的子节点/*QTreeWidgetItem *QTreeWidgetItem::parent() constQTreeWidgetItem *QTreeWidgetItem::child(int index) const*/// 若无父节点的话那么当前节点就是顶层节点if(item->parent()==nullptr){//item->removeChild(item->child(2)); //把第三项删除
//        ui->treeWidget->takeTopLevelItem(0); //索引是0的顶层节点是幼儿园同学qDebug()<<"单击的是顶层节点";}else// 子节点对应的顶层节点->removeChild(子节点);qDebug()<<"单击的是顶层节点下面的某个子节点";
}

(5) 现象

在这里插入图片描述

3.表格列表框 QTableWidget

(1)使用思路

第一步:设置表格的列数void QTableWidget::setColumnCount(int columns)参数:columns --》表格的列数比如:做一个学生表格  姓名  班级  成绩 --》三个字段
第二步:设置水平头 --》每一列字段的名字void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)参数:labels --》要设置的水平内容
第三步:设置表格的行数void QTableWidget::setRowCount(int rows)参数:rows --》表格的行数
第四步:设置正文内容void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)参数:row --》行号,从0开始column --》列号,从0开始item --》要添加的正文内容QTableWidgetItem::QTableWidgetItem(const QString &text)

(2)常用的接口函数

QTableWidgetItem *QTableWidget::takeItem(int row, int column) //删除文字内容

(3)示例代码

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_tableWidget_cellClicked(int row, int column);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置表格列数ui->tableWidget->setColumnCount(4);//设置表格的字段名(水平头)ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"年龄"<<"成绩"<<"家庭住址");//设置表格的行数ui->tableWidget->setRowCount(20);//往表格中添加正文内容ui->tableWidget->setItem(0,0,new QTableWidgetItem("张三"));ui->tableWidget->setItem(0,1,new QTableWidgetItem("21"));ui->tableWidget->setItem(0,2,new QTableWidgetItem("99.5"));ui->tableWidget->setItem(0,3,new QTableWidgetItem("广州"));ui->tableWidget->setItem(1,0,new QTableWidgetItem("李四"));ui->tableWidget->setItem(1,1,new QTableWidgetItem("19"));ui->tableWidget->setItem(1,2,new QTableWidgetItem("95.5"));ui->tableWidget->setItem(1,3,new QTableWidgetItem("深圳"));
}Widget::~Widget()
{delete ui;
}void Widget::on_tableWidget_cellClicked(int row, int column)
{qDebug()<<"单击的列表项行和列分别是: "<<row<<"  "<<column;//删除列表项ui->tableWidget->takeItem(row,column);
}

(4)现象

在这里插入图片描述

相关文章:

【QT】 QT中的列表框-横向列表框-树状列表框-表格列表框

QT中的列表框-横向列表框-树状列表框-表格列表框 1.横向列表框(1)主要方法(2)信号(3) 示例代码1:(4) 现象&#xff1a;(5) 示例代码2&#xff1a;加载目录项在横向列表框显示(6) 现象&#xff1a; 2.树状列表框 QTreeWidget(1)使用思路(2)信号(3)常用的接口函数(4) 示例代码&am…...

使用DeepSeek的AIGC的内容创作者,如何看待陈望道先生所著的《修辞学发凡》?

目录 1.从修辞手法的运用角度 2.从语言风格的塑造角度 3.从提高创作效率角度 4.从文化传承与创新角度 大家好这里是AIWritePaper官方账号&#xff0c;官网&#x1f449;AIWritePaper~ 《修辞学发凡》是陈望道 1932 年出版的中国第一部系统的修辞学著作&#xff0c;科学地总…...

使用 GitHub Actions 和 Nuitka 实现 Python 应用(customtkinter ui库)的自动化跨平台打包

目录 引言前置准备配置文件详解实现细节CustomTkinter 打包注意事项完整配置示例常见问题 引言 在 Python 应用开发中&#xff0c;将源代码打包成可执行文件是一个常见需求。本文将详细介绍如何使用 GitHub Actions 和 Nuitka 实现自动化的跨平台打包流程&#xff0c;支持 W…...

【Part 2安卓原生360°VR播放器开发实战】第一节|通过传感器实现VR的3DOF效果

《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化&#xff0c;以及高分辨率视频性能优化等实战技巧。 &#x1f4dd; 希望通过这个专栏&am…...

【1】云原生,kubernetes 与 Docker 的关系

Kubernetes&#xff1f;K8s&#xff1f; Kubernetes经常被写作K8s。其中的数字8替代了K和s中的8个字母——这一点倒是方便了发推&#xff0c;也方便了像我这样懒惰的人。 什么是云原生&#xff1f; 云原生&#xff1a; 它是一种构建和运行应用程序的方法&#xff0c;它包含&am…...

基于Redis实现RAG架构的技术解析与实践指南

一、Redis在RAG架构中的核心作用 1.1 Redis作为向量数据库的独特优势 Redis在RAG架构中扮演着向量数据库的核心角色&#xff0c;其技术特性完美契合RAG需求&#xff1a; 特性技术实现RAG应用价值高性能内存存储基于内存的键值存储架构支持每秒百万级的向量检索请求分布式架构…...

trivy开源安全漏洞扫描器——筑梦之路

开源地址&#xff1a;https://github.com/aquasecurity/trivy.git 可扫描的对象 容器镜像文件系统Git存储库&#xff08;远程&#xff09;虚拟机镜像Kubernetes 在容器镜像安全方面使用广泛&#xff0c;其他使用相对较少。 能够发现的问题 正在使用的操作系统包和软件依赖项…...

pnpm确认全局下载安装了还是显示cnpm不是内部或外部命令,也不是可运行的程序

刚开始是正常使用的。突然开始用不了了一直报错 1.在确保自己node和npm都一直正常使用并且全局安装pnpm的情况下 打开cmd查看npm的环境所在位置 npm config get prefix 2.接着打开高级系统设置 查看自己的path配置有没有问题 确认下载了之后pnpm -v还报错说明没有查询到位置 …...

基于 pnpm + Monorepo + Turbo + 无界微前端 + Vite 的企业级前端工程实践

基于 pnpm Monorepo Turbo 无界微前端 Vite 的企业级前端工程实践 一、技术演进&#xff1a;为什么引入 Vite&#xff1f; 在微前端与 Monorepo 架构落地后&#xff0c;构建性能成为新的优化重点&#xff1a; Webpack 构建瓶颈&#xff1a;复杂配置导致开发启动慢&#…...

软考高级系统架构设计师-第15章 知识产权与标准化

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考3分左右&#xff0c;较为简单。 15.1 标准化基础知识 1. 标准的分类 分类 内容 国际标准&#xff08;IS&#xff09; 国际标准化组织&#xff08;ISO&#xff09;、国际电工…...

MySQL 视图

核心目标&#xff1a; 学习如何创建和使用视图&#xff0c;以简化复杂的查询、提供数据访问控制、实现逻辑数据独立性&#xff0c;并通过 WITH CHECK OPTION 保证数据一致性。 什么是视图&#xff1f; 视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;其内容由一个 …...

[操作系统] 信号

信号 vs IPC 板书最后提到了 “信号 vs IPC”&#xff0c;暗示了信号也是一种进程间通信 (Inter-Process Communication, IPC) 的机制。虽然信号的主要目的是事件通知&#xff0c;但它也可以携带少量的信息&#xff08;即信号的类型&#xff09;。 初探“信号”——操作系统的“…...

网络基础(协议,地址,OSI模型、Socket编程......)

目录 一、计算机网络发展 二、协议 1.认识协议 2.OSI七层模型 3.TCP/IP 五层(或四层)模型 4.协议本质 三、网络传输流程 1.MAC地址 2.协议栈 3.IP地址 IP地址 vs MAC地址 1. 核心区别 2. 具体通信过程类比 3. 关键总结 为什么需要两者&#xff1f; 4.协议栈图解…...

产品经理学习过程

一&#xff1a;扫盲篇&#xff08;初始产品经理&#xff09; 阶段1&#xff1a;了解产品经理 了解产品经理是做什么的、产品经理的分类、产品经理在实际工作中都会接触什么样的岗位、以及产品经理在实际工作中具体要做什么事情。 二&#xff1a;准备篇 阶段2&#xff1a;工…...

深入理解Java包装类:自动装箱拆箱与缓存池机制

深入理解Java包装类&#xff1a;自动装箱拆箱与缓存池机制 对象包装器 Java中的数据类型可以分为两类&#xff1a;基本类型和引用类型。作为一门面向对象编程语言&#xff0c; 一切皆对象是Java语言的设计理念之一。但基本类型不是对象&#xff0c;无法直接参与面向对象操作&…...

Linux中的信号量

目录 信号量概念 定义 操作 类型 应用 信号量封装 一、创建信号量 头文件 函数原型 参数说明 返回值 示例 二、设置信号量初始值 头文件 函数原型 参数解释 返回值 示例 三、信号量的P操作 头文件 函数原型 参数解释 返回值 示例 四、信号量的V操作 示…...

深入理解linux操作系统---第15讲 Web 服务器 Nginx

15.1 Nginx 概述 核心特性与历史背景 Nginx由俄罗斯工程师Igor Sysoev于2002年开发&#xff0c;2004年正式发布&#xff0c;旨在解决传统服务器&#xff08;如Apache&#xff09;的C10K问题&#xff08;即单机万级并发连接处理&#xff09;。其采用事件驱动&#xff08;Event…...

深度解析算法之前缀和

25.【模版】一维前缀和 题目链接 描述 输入描述 输出描述 输出q行,每行代表一次查询的结果. 示例 输入&#xff1a; 3 2 1 2 4 1 2 2 3 复制 输出&#xff1a; 3 6 这个题的话就是下面的样子&#xff0c;我们第一行输入 3 2的意思即是这个数组是3个元素大小的数组&…...

混合精度训练中的算力浪费分析:FP16/FP8/BF16的隐藏成本

在大模型训练场景中&#xff0c;混合精度训练已成为降低显存占用的标准方案。然而&#xff0c;通过NVIDIA Nsight Compute深度剖析发现&#xff0c;‌精度转换的隐藏成本可能使理论算力利用率下降40%以上‌。本文基于真实硬件测试数据&#xff0c;揭示不同精度格式的计算陷阱。…...

6.8 Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度

Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度 实现每日和每周定时任务 关键词:定时任务调度、Python 原生调度器、Cron 脚本、异常重试机制、任务队列管理 1. 定时任务架构设计 采用 分层调度架构 实现灵活的任务管理: #mermaid-svg-PnZcDOgOklVieQ8X {f…...

[Android] 豆包爱学v4.5.0小学到研究生 题目Ai解析

[Android] 豆包爱学 链接&#xff1a;https://pan.xunlei.com/s/VOODT6IclGPsC7leCzDFz521A1?pwdjxd8# 拍照解析答案 【应用名称】豆包爱学 【应用版本】4.5.0 【软件大小】95mb 【适用平台】安卓 【应用简介】豆包爱学&#xff0c;一般又称河马爱学教育平台app,河马爱学。 关…...

swift-12-Error处理、关联类型、assert、泛型_

一、错误类型 开发过程常见的错误 语法错误&#xff08;编译报错&#xff09; 逻辑错误 运行时错误&#xff08;可能会导致闪退&#xff0c;一般也叫做异常&#xff09; 2.1 通过结构体 第一步 struct MyError : Errort { var msg: String &#xff5d; 第二步 func divide(_ …...

每日定投40刀BTC(14)20250409 - 20250419

定投 坚持 《磨剑篇》浮生多坎壈&#xff0c;志业久盘桓。松柏凌霜易&#xff0c;骅骝涉险难。砺锋临刃缺&#xff0c;淬火取金残。但使精魂在&#xff0c;重开万象端。...

【刷题Day20】TCP和UDP(浅)

TCP 和 UDP 有什么区别&#xff1f; TCP提供了可靠、面向连接的传输&#xff0c;适用于需要数据完整性和顺序的场景。 UDP提供了更轻量、面向报文的传输&#xff0c;适用于实时性要求高的场景。 特性TCPUDP连接方式面向连接无连接可靠性提供可靠性&#xff0c;保证数据按顺序…...

大数据建模与评估

文章目录 实战案例:电商用户分群与价值预测核心工具与库总结一、常见数据挖掘模型原理及应用(一)决策树模型(二)随机森林模型(三)支持向量机(SVM)模型(四)K - Means聚类模型(五)K - Nearest Neighbors(KNN)模型二、运用Python机器学习知识实现数据建模与评估(一…...

Python语法系列博客 · 第6期[特殊字符] 文件读写与文本处理基础

上一期小练习解答&#xff08;第5期回顾&#xff09; ✅ 练习1&#xff1a;字符串反转模块 string_tools.py # string_tools.py def reverse_string(s):return s[::-1]调用&#xff1a; import string_tools print(string_tools.reverse_string("Hello")) # 输出…...

Pandas取代Excel?

有人在知乎上提问&#xff1a;为什么大公司不用pandas取代excel&#xff1f; 而且列出了几个理由&#xff1a;Pandas功能比Excel强大&#xff0c;运行速度更快&#xff0c;Excel除了简单和可视化界面外&#xff0c;没有其他更多的优势。 有个可怕的现实是&#xff0c;对比Exce…...

《解锁图像“高清密码”:超分辨率重建之路》

在图像的世界里&#xff0c;高分辨率意味着更多细节、更清晰的画面&#xff0c;就像用高清望远镜眺望远方&#xff0c;一切都纤毫毕现。可现实中&#xff0c;我们常被低分辨率图像困扰&#xff0c;模糊的监控画面、老旧照片里难以辨认的面容……不过别担心&#xff0c;图像超分…...

杨校老师课堂之C++入门练习题梳理

采用C完成下列题目&#xff0c;要求每题目的时间限制&#xff1a;1秒 内存限制&#xff1a;128M 1. 交换个位与十位的数字 时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 试编写一个程序&#xff0c;输入一个两位数&#xff0c;交换十位与个位上的数字并输出。 …...

基于springboot的老年医疗保健系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…...

数据分析与挖掘

一 Python 基本语法 变量与数据类型 &#xff1a; Python 中变量无需声明&#xff0c;直接赋值即可。 常见的数据类型有数值型&#xff08;整型 int、浮点型 float、复数型 complex&#xff09;、字符串型&#xff08;str&#xff0c;用单引号、双引号或三引号括起来&#xff…...

RoBoflow数据集的介绍

https://public.roboflow.com/object-detection&#xff08;该数据集的网址&#xff09; 可以看到一些基本情况 如果我们想要下载&#xff0c;直接点击 点击图像可以看到一些基本情况 可以点击红色箭头所指&#xff0c;右边是可供选择的一些yolo模型的格式 如果你想下载…...

大模型Rag - 两大检索技术

一、稀疏检索&#xff1a;关键词匹配的经典代表 稀疏检索是一种基于关键词统计的传统检索方法。其基本思想是&#xff1a;通过词频和文档频率来衡量一个文档与查询的相关性。 核心原理 文档和查询都被表示为稀疏向量&#xff08;如词袋模型&#xff09;&#xff0c;只有在词…...

【T型三电平仿真】SVPWM调制

目录 仿真模型分析 克拉克变换 大扇区判断​编辑 小区域判断 计算基本电压矢量作用时间 确定基本电压矢量的作用顺序 作用时间和矢量作用顺序对应 七段式化生成阶梯图 矢量状态分布 本人学习过程中提出的问题和解释 SVPWM调制实现了什么功能 SVPWM的算法步骤是什么…...

树莓派5-开发应用笔记

0.树莓派系统目录 /home&#xff1a;用户目录。 除了root用户外&#xff0c;其他所有的使用者的数据都存放在这个目录下&#xff0c;在树莓派的系统中&#xff0c;/home目录中有一个pi的子目录,这个就是pi用户的默认目录。 /bin&#xff1a; 主要放置系统的必备执行文件目录。 …...

[Java实战经验]异常处理最佳实践

一些好的异常处理实践。 目录 异常设计自定义异常为异常设计错误代码&#xff08;状态码&#xff09;设计粒度全局异常处理异常日志信息保留 异常处理时机资源管理try-with-resources异常中的事务 异常设计 自定义异常 自定义异常设计&#xff0c;如业务异常定义BusinessExce…...

AOSP的Doze模式-LightIdle初识

前言 从Android 6.0开始&#xff0c;谷歌引入了Doze模式(打盹模式)的省电技术延长电池使用时间。根据第三方测试显示&#xff0c;两台同样的Nexus 5&#xff0c;开启的Doze的一台待机能达到533小时&#xff0c;而未开启Doze的一台待机只能达到200小时。Doze省电效果十分明显。…...

QML动画--ParticleSystem

ParticleSystem 是 QML 中用于创建和管理粒子系统的组件&#xff0c;可以制作各种粒子效果如火焰、烟雾、爆炸等。 基本用法 qml import QtQuick.Particles 2.15ParticleSystem {id: particleSystemImageParticle {source: "particle.png"color: "red"a…...

Win 11 重装 Ubuntu 双系统方法

有时候 Ubuntu 环境崩溃了&#xff0c;或者版本过低&#xff0c;需要卸载重装。本文介绍重装的方法&#xff0c;默认已经有一个双系统。 1. 删除原先 Ubuntu 分区 首先打开 Win 的磁盘管理&#xff0c;找到 Ubuntu 的分区&#xff0c;右键删除分区&#xff08;注意不要错删 wi…...

单例模式:懒汉式的两种优化写法

单例模式&#xff1a;全局唯一实例 懒汉式&#xff1a;获取时才初始化 ①静态局部变量实现&#xff08;Meyer’s Singleton&#xff09;【推荐】 /* 类内创建自身实例的可行性分析&#xff1a;在C中&#xff0c;类可以通过静态成员函数创建自身实例。这种机制的核心在于&…...

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标&#xff1a;将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0…...

高速系统设计简介

1.1 PCB 设计技术回顾 1981 年 8 月 12 日&#xff0c;IBM 正式发布了历史上第一台个人电脑&#xff0c;自此之后&#xff0c;个人电脑融入了人们生活和工作的各个角落&#xff0c;人类从此进入了个人电脑时代。个人电脑的出现&#xff0c;不仅促进了电子产品在消费领域的发展…...

不规则曲面上两点距离求取

背景 在CT中求皮肤上两点间的弧长。由于人体表面并不是规则的曲面&#xff0c;不可能用圆的弧长求取方法来计算出两点间的弧长。 而在不规则的曲面上求两点的距离&#xff0c;都可以用类似测地线距离求取的方式来求取&#xff08;积分&#xff09;&#xff0c;而转化为搜索路…...

用usb网卡 虚拟机无法开到全双工的解决办法

今天突发奇想 给unraid宿主机插了两个一摸一样的usb网卡 2.5g的 直通给不同的虚拟机 这里unraid需要安装"USB Manager" 请给unraid自备环境 直通的时候 第一次还没生效 看不到网卡 我又在unraid的管理界面 顶部可以看到多出来一个 "usb"页面 打开可…...

webpack 中 chunks详解

webpack 中 chunks详解 在 Webpack 项目中&#xff0c;webpack.config.js 是核心配置文件&#xff0c;而非 webpack.json。chunks 的概念与 Webpack 的代码分割&#xff08;Code Splitting&#xff09;功能密切相关&#xff0c;通过 optimization.splitChunks 配置项可以实现对…...

Java @Serial 注解深度解析

Java Serial 注解深度解析 1. 注解本质 Serial 是 Java 14 引入的编译时校验注解&#xff0c;用于标记序列化相关成员&#xff0c;帮助开发者避免常见的序列化错误。 2. 核心作用 (1) 主要用途 标记序列化相关的特殊方法/字段 提供编译时检查 替代传统的命名约定验证 (…...

齐次坐标变换+Unity矩阵变换

矩阵变换 变换&#xff08;transform)&#xff1a;指的是我们把一些数据&#xff0c;如点&#xff0c;方向向量甚至是颜色&#xff0c;通过某种方式&#xff08;矩阵运算&#xff09;&#xff0c;进行转换的过程。 变换类型 线性变换&#xff1a;保留矢量加和标量乘的计算 f(x)…...

Python语法系列博客 · 第9期[特殊字符] 函数参数进阶:*args、**kwargs 与参数解包技巧

上一期小练习解答&#xff08;第8期回顾&#xff09; ✅ 练习1&#xff1a;整数转字符串列表 nums [1, 2, 3, 4, 5] str_list list(map(str, nums))✅ 练习2&#xff1a;筛选回文字符串 words ["madam", "hello", "noon", "python&qu…...

Python语法系列博客 · 第4期[特殊字符] 函数的定义与使用:构建可复用的模块

上一期小练习解答&#xff08;第3期回顾&#xff09; ✅ 练习1&#xff1a;创建一个列表&#xff0c;添加5个名字&#xff0c;并用循环打印 names ["Alice", "Bob", "Charlie", "David", "Eva"] for name in names:print…...

6547网:2025年3月 Python编程等级考试一级真题试卷

2025年3月青少年软件编程Python等级考试&#xff08;一级&#xff09;真题试卷 题目总数&#xff1a;37 总分数&#xff1a;100 选择题 第 1 题 单选题 下列哪个软件不能运行Python程序&#xff1f;&#xff08; &#xff09; A.JupyterNotebook B.Pycharm C.原版…...