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

【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)

**View和**Widget的区别?
**View的实现更底层,**Widget是基于**View封装实现的更易用的类型。

**View使用MVC结构

MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。

M(model)模型。管理应用程序的核心数据和业务逻辑。并且通知视图和控制器数据已经发生变化。

V(view)视图,界面。显示数据,并接受用户输入。

C(controller)控制器。衔接M和V,处理用户输入,更新模型和视图。

**View只负责视图,并不具备其他功能,如数据存储、业务逻辑。

使用**View需要程序员自己写,model和controller部分。

**Widget已经封装好,具备各部分功能,并提供接口设置自定义部分。

1.QListWidget 列表控件

  • 功能:显示纵向的列表,每个选项都可以被选中
currentRow当前被选中的的是第几行
count一共多少行
sortingEnabled

是否允许排序

isWrapping是否允许换行
itemAlinment元素对齐方式
selectRectVisible被选中元素的矩形是否可见
spacing元素之间的间隔
  • 方法:
     

addItem(const QString& label)

addItem(QListWidget Item* item)

添加元素
currentItem()返回QListWidgetItem*,返回当前选中元素指针
setCurrentItem(QListWidgetItem* item)设置选中元素,参数指针。
setCurrentRow(int row)设置选中元素,参数行号(从0开始)
insertItem(const QString& label,int  row) insertItem(QListWidgetItem *item , int row)指定行号,插入一个新元素。
item(int row)返回指定行号的元素,返回QListWidgetItem*
takeItem(int row)删除指定行的元素,返回被删除元素的QListWidgetItem*
  • 信号:
     
currentItemChanged(QListWidgetItem* current,QListWidgetItem*old)

选中元素改变时触发。

参数是新当前选中,和上一个选中的元素指针。

currentRowChanged(int)

选中元素改变时触发。

参数是当前选中元素的行号。

itemClicked(QListWidgetItem* item)点击某个元素时触发。
itemDoubleClicked(QListWidgetItem*  item)双击某个元素时触发。
itemEntered(QListWidgetItem* item)鼠标悬停在选项之上时触发。

例:通过按钮添加/删除行

#include "widget.h"
#include "ui_widget.h"
#include<QString>
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//添加元素ui->listWidget->addItem("C++");ui->listWidget->addItem("Java");ui->listWidget->addItem(new QListWidgetItem("Python"));}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()//新增选项
{//获取输入框内容QString str=ui->lineEdit->text();if(str==""){return ;}//新增列表选项ui->listWidget->addItem(str);
}void Widget::on_pushButton_2_clicked()//删除元素
{//获取当前选中元素int row=ui->listWidget->currentRow();ui->listWidget->takeItem(row);
}void Widget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{if(current!=nullptr){qDebug()<<"当前选中元素:"<<current->text();}if(previous!=nullptr){qDebug()<<"上一个选中元素:"<<previous->text();}
}

2.QTabelWidget 表格控件

  • QTableWidget核心方法:
item(int row, int column)获取指定行列的元素,QTableWidgetItem* 
setItem(int row, int column, QTableWidget*)指定行列,设置单元格的元素
currentItem()获取当前选中元素
currentRow()获取当前选中元素的行号
currentColumn()获取当前选中元素的列号
row(QTableWidgetItem*)获取指定元素的行号
column(QTableWidgetItem*)获取指定元素的列号
rowCount()获取总行数
columnCount()获取总列数
insertRow(int row)插入新的一行,在指定行号
insertColumn(int column)插入新的一列,在指定列号
removeRow(int row)删除指定行
removeColumn(int column)删除指定列
setHorizontalHeaderItem(int  column, QTableWidget*)设置水平方向的表头,每一列的表头
setVerticalHeaderItem(int row, QTableWidget*)设置垂直方向的表头,每一行的表头

QTableWidgetItem核心信号

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核心方法
row()获取元素行号
column()获取元素列号
setText(const QSting&)设置文本
setTextAlignment(int)设置文本对齐方式
setIcon(const QIcon&)设置图标
setSelected(bool)设置被选中
setSizeHints(const QSize&)设置尺寸
setFont(const QFont&)设置字体

例:通过按钮,添加行/列,删除行/列

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//初始化表格ui->tableWidget->insertRow(0);ui->tableWidget->insertRow(1);ui->tableWidget->insertRow(2);ui->tableWidget->insertColumn(0);ui->tableWidget->insertColumn(1);ui->tableWidget->insertColumn(2);ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("学号"));ui->tableWidget->setHorizontalHeaderItem(1,new QTableWidgetItem("姓名"));ui->tableWidget->setHorizontalHeaderItem(2,new QTableWidgetItem("班级"));for(int i=0;i<3;i++){for(int j=0;j<3;j++){ui->tableWidget->setItem(i,j,new QTableWidgetItem("0"));}}}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insertRow_clicked()
{//默认在末尾插入一行//获取当前的行数int row_count=ui->tableWidget->rowCount();ui->tableWidget->insertRow(row_count);
}void Widget::on_pushButton_insetColumn_clicked()
{int column_count=ui->tableWidget->columnCount();ui->tableWidget->insertColumn(column_count);//设置表头QString s=ui->lineEdit->text();if(s.isEmpty()==true){return ;}ui->tableWidget->setHorizontalHeaderItem(column_count,new QTableWidgetItem(s));
}void Widget::on_pushButton_deleteRow_clicked(bool checked)
{//删除选中的行int current=ui->tableWidget->currentRow();ui->tableWidget->removeRow(current);
}void Widget::on_pushButton_4_clicked()
{//删除选中的行int current=ui->tableWidget->currentColumn();ui->tableWidget->removeColumn(current);
}

行列数过多后,表格会自动添加滚动条。

3.QTreeWidget 树形控件

  • 功能:树形控件,每一个元素是QTreeWidgetItem,每个QTreeWidgetItem 可以包含多个⽂本和图标,每个⽂本/图标为⼀个列。

但这个树形结构,不一定只有一个根节点,把顶层节点称为topLevelItem。

  • 方法
clear()清空所有子节点
addTopLevelItem(QTreeWidgetItem* item)新增顶层节点
topLevelItem(int index)获取指定下标的顶层节点
topLevelItemCount()获取顶层节点的个数
indexOfTopLevelItem(QTreeWidgetItem*  item)获取节点在顶层节点中的下标
takeTopLevelItem(int index)

根据下标,删除指定的顶层节点。返回被删除元素指针。

只能这样删除顶层元素,必须先获取下标。

currentItem()获取当前选中节点的指针
setCurrentItem(QTreeWidgetItem* item)设置选中节点
setExpanded(bool)展开/关闭子节点

setHeaderLabel(const QString& text)

setHeaderItem()

设置TreeWidget的header名称

  • QTreeWidget核心信号
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核心属性

text文本
textAlign文本对齐方式
icon持有的图标
font字体

hidden

是否隐藏
disabled是否禁用
expand是否展开
sizeHint尺寸大小
selected是否选中

  • QTreeWidgetItem核心方法
addChild(QTreeWidgetItem* child)新增子节点
childCount()子节点个数
child(int index)获取指定下标的子节点,返回指针
takeChild(int index)删除对应下标的子节点
removeChild(QTreeWidgetItem* child)删除对应的子节点
parent()获取该元素的父节点

例:添加节点的方式

图形化方式添加节点

代码方式

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置整棵树的名称,根节点名称ui->treeWidget->setHeaderLabel("动物");//新增顶层节点QTreeWidgetItem* item1 =new QTreeWidgetItem();item1->setText(0,"猫");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item1);QTreeWidgetItem* item2 =new QTreeWidgetItem();item2->setText(0,"狗");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item2);QTreeWidgetItem* item3 =new QTreeWidgetItem();item3->setText(0,"鸟");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item3);QTreeWidgetItem* item4 =new QTreeWidgetItem();item4->setText(0,"暹罗");QTreeWidgetItem* item5 =new QTreeWidgetItem();item5->setText(0,"加菲");QTreeWidgetItem* item6 =new QTreeWidgetItem();item6->setText(0,"虎斑");item1->addChild(item4);item1->addChild(item5);item1->addChild(item6);}Widget::~Widget()
{delete ui;
}

例:通过按钮,添加顶层节点/普通节点/删除节点

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置整棵树的名称,根节点名称ui->treeWidget->setHeaderLabel("动物");//新增顶层节点QTreeWidgetItem* item1 =new QTreeWidgetItem();item1->setText(0,"猫");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item1);QTreeWidgetItem* item2 =new QTreeWidgetItem();item2->setText(0,"狗");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item2);QTreeWidgetItem* item3 =new QTreeWidgetItem();item3->setText(0,"鸟");//每个节点都可以有多列,指定不同下标就可以ui->treeWidget->addTopLevelItem(item3);QTreeWidgetItem* item4 =new QTreeWidgetItem();item4->setText(0,"暹罗");QTreeWidgetItem* item5 =new QTreeWidgetItem();item5->setText(0,"加菲");QTreeWidgetItem* item6 =new QTreeWidgetItem();item6->setText(0,"虎斑");item1->addChild(item4);item1->addChild(item5);item1->addChild(item6);}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insertTop_clicked()
{QString text=ui->lineEdit->text();if(text.isEmpty()==true){return ;}QTreeWidgetItem* item=new QTreeWidgetItem();item->setText(0,text);ui->treeWidget->addTopLevelItem(item);
}void Widget::on_pushButton_insert_clicked()
{//获取选中的元素QTreeWidgetItem* it=ui->treeWidget->currentItem();if(it==nullptr){return ;}QString text=ui->lineEdit->text();if(text.isEmpty()==true){return ;}QTreeWidgetItem* item=new QTreeWidgetItem();item->setText(0,text);it->addChild(item);}void Widget::on_pushButton_delete_clicked()
{QTreeWidgetItem* it=ui->treeWidget->currentItem();if(it==nullptr){return ;}//获取当前元素的父节点QTreeWidgetItem* parent=it->parent();//父节点为空。说明当前节点为顶层节点//获取当前选中节点的下标if(parent==nullptr){int index=ui->treeWidget->indexOfTopLevelItem(it);ui->treeWidget->takeTopLevelItem(index);//删除顶层节点}else{parent->removeChild(it);}}

上述对界面的操作都是内存级别的操作,程序重启后就会恢复到初始状态。

想要保留操作变化,需要额外的数据持久化操作。写入文件,运行时重写读取文件加载数据。

相关文章:

【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)

**View和**Widget的区别&#xff1f; **View的实现更底层&#xff0c;**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式&#xff0c;软件设计模式。 M&#xff08;model&#xff09;模型。管理应用程序的核心数据和…...

java 读取sq3所有表数据到objectNode

1.实现效果&#xff1a;将sq3中所有表的所有字段读到objectNode 对象中&#xff0c;兼容后期表字段增删情况&#xff0c;数据组织形式如下图所示&#xff1a; 代码截图&#xff1a; 代码如下&#xff1a; package com.xxx.check.util;import java.sql.*; import java.util.Arr…...

react redux用法学习

参考资料&#xff1a; https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具&#xff1a;deepseek&#xff0c;通义灵码 第一天 安装相关依赖&#xff1a; 使用redux的中间件&#xff1a; npm i react-redu…...

C++20中的std::atomic_ref

一、std::atomic_ref 我们在学习C11后的原子操作时&#xff0c;都需要提前定义好std::atomic变量&#xff0c;然后才可以在后续的应用程序中进行使用。原子操作的优势在很多场合下优势非常明显&#xff0c;所以这也使得很多开发者越来习惯使用原子变量。 但是&#xff0c;在实…...

encodeURI(),encodeURIComponent()区别

encodeURI()&#xff0c;encodeURIComponent()区别 encodeURI(): 对整个url(链接/网络链接)进行编码。 对中文&#xff0c;完全编码。 对英文不带空格则不会编码&#xff0c;带空格则会对空格编码。 解码&#xff1a;decodeURI() 例如&#xff1a; let ChineseUrl "htt…...

Selenium:网页frame与多窗口处理

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、多窗口处理 1.1、多窗口简介 点击某些链接&#xff0c;会重新打开⼀个窗⼜&#xff0c;对于这种情况&#xff0c;想在新页⾯上操作&#xff0c;就 得先切换窗…...

自动驾驶---如何打造一款属于自己的自动驾驶系统

在笔者的专栏《自动驾驶Planning决策规划》中&#xff0c;主要讲解了行车的相关知识&#xff0c;从Routing&#xff0c;到Behavior Planning&#xff0c;再到Motion Planning&#xff0c;以及最后的Control&#xff0c;笔者都做了相关介绍&#xff0c;其中主要包括算法在量产上…...

开源机器人+具身智能 解决方案+AI

开源机器人、具身智能(Embodied Intelligence)以及AI技术的结合,可以为机器人领域带来全新的解决方案。以下是这一结合的可能方向和具体方案: 1. 开源机器人平台 开源机器人平台为开发者提供了灵活的基础架构,可以在此基础上结合具身智能和AI技术。以下是一些常用的开源机…...

【web自动化】指定chromedriver以及chrome路径

selenium自动化&#xff0c;指定chromedriver&#xff0c;以及chrome路径 对应这篇文章&#xff0c;可以点击查看&#xff0c;详情 from selenium import webdriverdef get_driver():# 获取配置对象option webdriver.ChromeOptions()option.add_experimental_option("de…...

高等代数笔记—线性变换

latex花体字母与花体数字 https://blog.csdn.net/weixin_39589455/article/details/133846783 https://blog.csdn.net/orz_include/article/details/123645710线性变换 线性空间 V V V到自身的映射称为 V V V的一个变换&#xff0c;最基本的是线性变换。 定义&#xff1a;变换…...

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统 需求 在实际生成操作过程中&#xff0c;一般会遇到物理服务器存在多块盘的情况。 安装过程中&#xff0c;磁盘的标签是随机分配的&#xff0c;并不是空间较小的盘&#xff0c;就会使用较小的磁盘标签 而需求往往需要…...

2024BaseCTF_week4_web上

继续&#xff01;冲冲冲 目录 圣钥之战1.0 nodejs 原型 原型链 原型链污染 回到题目 flag直接读取不就行了&#xff1f; 圣钥之战1.0 from flask import Flask,request import jsonapp Flask(__name__)def merge(src, dst):for k, v in src.items():if hasattr(dst, __geti…...

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡 背景 前端开发接口请求&#xff0c;调试&#xff0c;联调&#xff0c;接入数据&#xff0c;前端必不可少工具&#xff0c;postman是一个非常好…...

内网穿透的应用-Ubuntu本地Docker搭建pichome文件管理系统打造个人云相册

文章目录 前言1.关于pichome2.本地部署pichome3.简单使用pichome4. 安装内网穿透5.配置pichome公网地址6. 配置固定公网地址 前言 你是不是也经常遇到这样的尴尬&#xff1a;手机、电脑里堆满了照片和视频&#xff0c;想找一张特定的图片时却像在大海捞针一样无从下手&#xf…...

深度学习之神经网络框架搭建及模型优化

神经网络框架搭建及模型优化 目录 神经网络框架搭建及模型优化1 数据及配置1.1 配置1.2 数据1.3 函数导入1.4 数据函数1.5 数据打包 2 神经网络框架搭建2.1 框架确认2.2 函数搭建2.3 框架上传 3 模型优化3.1 函数理解3.2 训练模型和测试模型代码 4 最终代码测试4.1 SGD优化算法…...

DeepSeek AI R1推理大模型API集成文档

DeepSeek AI R1推理大模型API集成文档 引言 随着自然语言处理技术的飞速发展&#xff0c;大语言模型在各行各业的应用日益广泛。DeepSeek R1作为一款高性能、开源的大语言模型&#xff0c;凭借其强大的文本生成能力、高效的推理性能和灵活的接口设计&#xff0c;吸引了大量开发…...

怎麼使用靜態住宅IP進行多社媒帳號管理

隨著社交媒體平臺的多樣化&#xff0c;很多人發現一個社媒帳號已經無法滿足需求。以下是幾個常見場景&#xff1a; 企業需求&#xff1a;企業可能需要在不同平臺上運營多個品牌帳號&#xff0c;為每個市場地區單獨設立帳號。個人需求&#xff1a;一些自由職業者或內容創作者可…...

【Elasticsearch】Bucket Selector Aggregation

Elasticsearch 的Bucket Selector Aggregation是一种强大的管道聚合功能&#xff0c;用于根据条件过滤聚合结果中的桶&#xff08;buckets&#xff09;。它允许用户通过编写脚本来动态决定哪些桶应该被保留&#xff0c;哪些应该被过滤掉。以下是对Bucket Selector Aggregation的…...

CEF132 编译指南 MacOS 篇 - 启程:认识 CEF (一)

1. 引言 在当今的软件开发领域&#xff0c;将 Web 技术融入桌面应用程序已成为一种趋势。开发者们寻求一种方式&#xff0c;既能充分利用原生应用的性能&#xff0c;又能享受 Web 开发带来的高效和灵活性。Chromium Embedded Framework (CEF) 应运而生&#xff0c;它是一个基于…...

Python 操作 MongoDB 教程

一、引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。传统的关系型数据库在处理一些复杂场景时可能会显得力不从心&#xff0c;而 NoSQL 数据库应运而生。MongoDB 作为一款开源的、面向文档的 NoSQL 数据库&#xff0c;凭借其高性能、高可扩展性和灵活的数据模型…...

长安汽车发布“北斗天枢2.0”计划,深蓝汽车普及全民智驾

2月9日&#xff0c;长安汽车智能化战略“北斗天枢2.0”计划暨深蓝汽车全场景智能驾驶解决方案发布会在重庆盛大召开。此次发布会标志着长安汽车正式迈入智能化战略的新纪元&#xff0c;携手众多“中国智驾合伙人”&#xff0c;共同开启全民智驾元年。 发布会上&#xff0c;长安…...

SpringBoot速成(七)注册实战P2-P4

1.创建 数据库创建 依赖引入 <!-- mybatis起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency> <…...

大语言模型RAG,transformer

1、RAG技术流总结 第一张图是比较经典的RAG知识图谱&#xff0c;第二张图是更加详细扎实的介绍图。 1.1 索引 坦白来说这部分的技术并不是大模型领域的&#xff0c;更像是之前技术在大模型领域的应用&#xff1b;早在2019年我就做过faiss部分的尝试&#xff0c;彼时索引技术已…...

Crowdin 在线本地化平台调用硅基流动AI预翻译

平台介绍 硅基流动&#xff08;AI服务平台&#xff09; 官网&#xff1a;https://siliconflow.cn/zh-cn/ 官方介绍 我主要使用&#xff1a;云服务平台 SilliconCloud 此平台已经将热门的开源大语言模型部署&#xff0c;花钱买额度&#xff0c;就能使用 API 最近有上线 Deep…...

第5章 数据库系统(选择|案例|论文)(重点★★★★★)

5.1 数据库管理系统1 数据库是长期存储在计算机内的、有组织的、可共享的数据集合&#xff0c;数据库系统是指在计算机信息系统中引入数据库后的系统&#xff0c;一般由数据库、数据库管理系统 (DataBaseManagement System&#xff0c;DBMS)、应用系统、数据库管理员(DataBase…...

linux部署node服务

1、安装nvm管理node版本 # 下载、解压到指定目录 wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz tar -zxvf nvm-0.39.0.tar.gz -C /opt/nvm # 配置环境 vim ~/.bashrc~&#xff1a;这是一个路径简写符号&#xff0c;代表当前用户的主目录。在大多数 …...

【AI赋能】蓝耘智算平台实战指南:3步构建企业级DeepSeek智能助手

蓝耘智算平台实战指南&#xff1a;3步构建企业级DeepSeek智能助手 引言&#xff1a;AI大模型时代的算力革命 在2025年全球AI技术峰会上&#xff0c;DeepSeek-R1凭借其开源架构与实时推理能力&#xff0c;成为首个通过图灵测试的中文大模型。该模型在语言理解、跨模态交互等维…...

hyperf知识问题汇总

1、简单说下 hyperf&#xff08;什么是 hyperf&#xff09; 答&#xff1a;hyperf 是一个依赖swoole扩展的 php 开源开发框架&#xff0c;它由黄朝辉团队设计创建维护&#xff0c;具备简洁而强大的组件和超强的并发性能&#xff0c;而且还支持微服务架构&#xff0c;例如&…...

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…...

DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力

引言&#xff1a;低成本高性能的AI新范式 在2025年1月&#xff0c;中国AI公司DeepSeek发布了两个标志性模型——DeepSeek-R1-Zero与DeepSeek-R1&#xff0c;以仅600万美元的训练成本实现了与OpenAI O1系列&#xff08;开发成本约5亿美元&#xff09;相当的推理性能&#xff0c…...

SQLite 约束

SQLite 约束 SQLite 是一种轻量级的数据库管理系统,它以其简洁的设计和高效的性能在众多数据库系统中脱颖而出。在SQLite中,约束是一种用于确保数据完整性和一致性的机制。本文将详细介绍SQLite中的各种约束,包括它们的用途、语法以及在实际应用中的注意事项。 1. 约束概述…...

Vue.js 状态管理库Pinia

Pinia Pinia &#xff1a;Vue.js 状态管理库Pinia持久化插件-persist Pinia &#xff1a;Vue.js 状态管理库 Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 要使用Pinia &#xff0c;先要安装npm install pinia在main.js中导入Pinia 并使用 示例…...

qwen2.5-vl-7B视觉大模型 私有化部署webUI

服务器选用&#xff1a;算力云 部署qwen2.5-vl-7B&#xff0c;24g显卡跑不起图&#xff0c;单问问题就占20g左右。有能力可以用大点的显卡 一、下载模型 Qwen2.5-VL-7B-Instruct 有conda &#xff0c;可以在conda下操作&#xff0c;不知道conda的同学可以参考本博主之前的文章…...

Spring Boot 线程池自定义拒绝策略:解决任务堆积与丢失问题

如何通过自定义线程池提升系统稳定性 背景 在高并发系统中&#xff0c;线程池管理至关重要。默认线程池可能导致&#xff1a; 资源浪费&#xff08;创建过多线程导致 OOM&#xff09;任务堆积&#xff08;队列满后任务被拒绝&#xff09;任务丢失&#xff08;默认拒绝策略丢…...

C++17 新特性解析

C++17 是 C++ 标准的一个重要更新,它在 C++11/14 的基础上引入了许多新特性,进一步简化了代码编写、提升了性能和类型安全性。以下是 C++17 的主要特性分类介绍: 一、语言核心改进 1. 结构化绑定(Structured Bindings) 允许将元组、结构体或数组的成员直接解包到变量中。…...

支持向量机相关文献

根据最新的研究动态和文献综述&#xff0c;当前支持向量机&#xff08;SVM&#xff09;的研究方向和内容主要集中在以下几个方面&#xff1a; 1. 提高训练效率 并行计算与分布式计算&#xff1a;随着数据规模的增加&#xff0c;SVM的训练时间往往较长&#xff0c;难以满足实时…...

线上hbase rs 读写请求个数指标重置问题分析

问题描述: 客户想通过调用hbase的jmx接口获取hbase的读写请求个数,以此来分析HBase读写请求每日增量。 但是发现生产,测试多个集群,Hbase服务指标regionserver读写请求个数存在突然下降到0或者大幅度下降情况。 需要排查原因: 某个Region的读写请求数:会发现经常会重置为…...

USB子系统学习(四)用户态下使用libusb读取鼠标数据

文章目录 1、声明2、HID协议2.1、描述符2.2、鼠标数据格式 3、应用程序4、编译应用程序5、测试6、其它 1、声明 本文是在学习韦东山《驱动大全》USB子系统时&#xff0c;为梳理知识点和自己回看而记录&#xff0c;全部内容高度复制粘贴。 韦老师的《驱动大全》&#xff1a;商…...

WPF 设置宽度为 父容器 宽度的一半

方法1&#xff1a;使用 绑定和转换器 实现 创建类文件 HalfWidthConverter public class HalfWidthConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is double width){return width / 4…...

网络工程师 (30)以太网技术

一、起源与发展 以太网技术起源于20世纪70年代&#xff0c;最初由Xerox公司的帕洛阿尔托研究中心&#xff08;PARC&#xff09;开发。最初的以太网采用同轴电缆作为传输介质&#xff0c;数据传输速率为2.94Mbps&#xff08;后发展为10Mbps&#xff09;&#xff0c;主要用于解决…...

2025.2.11

1> 制作一个闹钟软件 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QTime> #include <QTimer> #include <QTimeEdit> #include <QDa…...

HTML应用指南:利用POST请求获取接入比亚迪业态的充电桩位置信息

在新能源汽车快速发展的今天,充电桩的分布和可用性成为了影响用户体验的关键因素之一。比亚迪作为全球领先的新能源汽车制造商,不仅在车辆制造方面取得了卓越成就,也在充电基础设施建设上投入了大量资源。为了帮助用户更方便地找到比亚迪充电桩的位置,本篇文章,我们将探究…...

系统URL整合系列视频四(需求介绍补充)

视频 系统URL整合系列视频四&#xff08;需求补充说明&#xff09; 视频介绍 &#xff08;全国&#xff09;大型分布式系统Web资源URL整合需求&#xff08;补充&#xff09;讲解。当今社会各行各业对软件系统的web资源访问权限控制越来越严格&#xff0c;控制粒度也越来越细。…...

PRC框架-Dubbo

RPC框架 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;框架是一种允许客户端通过网络调用服务器端程序的技术。以下是常见的RPC框架及其特点&#xff1a; 1. 基于HTTP/REST的RPC框架 特点&#xff1a;简单易用&#xff0c;与Web开发无缝集成&am…...

Win10环境借助DockerDesktop部署最新MySQL9.2

Win10环境借助DockerDesktop部署最新MySQL9.2 前言 作为一杆主要撸Java的大数据平台开发攻城狮&#xff0c;必不可少要折腾各种组件&#xff0c;环境和版本一直是很头疼的事情。虽然可以借助Anaconda来托管Python的环境&#xff0c;也可以使用多个虚拟机来部署不同的环境&…...

PlantUML 总结

PlantUML 总结 1. 概述 PlantUML 是一个开源工具&#xff0c;允许用户通过简单的文本描述来生成各种UML图表。它支持多种图表类型&#xff0c;包括但不限于序列图、用例图、类图、活动图等。 2. 基本概念 2.1 开始和结束标记 startuml 和 enduml&#xff1a;用于标记Plant…...

【Elasticsearch】监控与管理:集群监控指标

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Swift的方法派发机制

1. 静态派发&#xff08;Static Dispatch&#xff09; 静态派发在编译时确定方法的具体实现&#xff0c;调用时直接跳转到该实现。静态派发的优点是性能高&#xff0c;因为不需要运行时查找方法实现。 适用场景&#xff1a; 值类型&#xff08;Struct 和 Enum&#xff09;&am…...

4.python+flask+SQLAlchemy+达梦数据库

前提 1.liunx Centos7上通过docker部署了达梦数据库。从达梦官网下载的docker镜像。(可以参考前面的博文) 2.windows上通过下载x86,win64位的达梦数据库,只安装客户端,不安装服务端。从达梦官网下载达梦数据库windows版。(可以参考前面的博文) 这样就可以用windows的达…...

6.深度学习在推荐系统中的应用

接下来我们将学习深度学习在推荐系统中的应用。深度学习技术近年来在推荐系统中得到了广泛应用&#xff0c;能够有效提升推荐系统的性能和精度。在这一课中&#xff0c;我们将介绍以下内容&#xff1a; 深度学习在推荐系统中的优势常用的深度学习推荐模型深度学习推荐系统的实…...