【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型
1. 引入
QStandardItemModel
类提供了一个通用的模型,用于存储自定义数据。
以下是其用法:该类属于gui
模块,因此在.pro
中,需添加QT += gui
,如果已存在,则无需重复添加。
首先,引入头文件:
#include <QStandardItemModel>
2. 描述
以下介绍很重要,可以慢下心来阅读。
QStandardItemModel
类提供了一个用于存储自定义数据的通用模型。
QStandardItemModel
可以用作标准Qt数据类型的存储库。它是模型/视图类之一,是Qt模型/视图框架的一部分。
QStandardItemModel
提供了一种经典的基于项目的方法来处理模型。QStandardItemModel
中的项由QStandardItem
提供。
QStandardItemModel
实现了QAbstractItemModel
接口,这意味着该模型可以用于在任何支持该接口的视图中提供数据(例如QListView
, QTableView
和QTreeView
,以及您自己的自定义视图)。为了提高性能和灵活性,您可能希望创建QAbstractItemModel
的子类,以便为不同类型的数据存储库提供支持。例如,QDirModel
为底层文件系统提供了一个模型接口。
当您需要一个列表或树时,您通常会创建一个空的QStandardItemModel
,并使用appendRow()
向模型中添加项目,并使用item()
访问项目。如果您的模型表示一个表,您通常将表的尺寸传递给QStandardItemModel
构造函数,并使用setItem()
将项目定位到表中。您还可以使用setRowCount()
和setColumnCount()
来更改模型的尺寸。要插入项,使用insertRow()
或insertColumn()
,要删除项,使用removeRow()
或removeColumn()
。
您可以使用setHorizontalHeaderLabels()
和setVerticalHeaderLabels()
设置模型的标题标签。
您可以使用findItems()
在模型中搜索项目,并通过调用sort()
对模型进行排序。
调用clear()
从模型中删除所有项。
QStandardItemModel
创建表的一个示例:
QStandardItemModel model(4, 4);for (int row = 0; row < 4; ++row) {for (int column = 0; column < 4; ++column) {QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));model.setItem(row, column, item);}}
QStandardItemModel
创建树的一个例子:
QStandardItemModel model;QStandardItem *parentItem = model.invisibleRootItem();for (int i = 0; i < 4; ++i) {QStandardItem *item = new QStandardItem(QString("item %0").arg(i));parentItem->appendRow(item);parentItem = item;}
在视图上设置模型之后,您通常希望对用户操作做出反应,例如单击项。由于QAbstractItemView
提供了基于QModelIndex
的信号和函数,您需要一种方法来获得与给定的QModelIndex
相对应的QStandardItem
,反之亦然。itemFromIndex()
和indexFromItem()
提供了这种映射。itemFromIndex()
的典型用法包括获取视图中当前索引处的项,以及获取与QAbstractItemView
信号携带的索引对应的项,例如QAbstractItemView::clicked()
。首先,你将视图的信号连接到类中的槽:
QTreeView *treeView = new QTreeView(this);treeView->setModel(myStandardItemModel);connect(treeView, SIGNAL(clicked(QModelIndex)),this, SLOT(clicked(QModelIndex)));
当你收到信号时,你调用itemFromIndex()
在给定的模型索引上获得一个指向项目的指针:
void MyWidget::clicked(const QModelIndex &index){QStandardItem *item = myStandardItemModel->itemFromIndex(index);// Do stuff with the item ...}
相反,当您想调用以索引作为参数的模型/视图函数时,您必须获得项目的QModelIndex
。您可以通过使用模型的indexFromItem()
函数或调用QStandardItem::index()
来获得索引:
treeView->scrollTo(item->index());
当然,您不需要使用基于项目的方法;在使用模型时,您可以完全依赖于QAbstractItemModel
接口,或者使用两者的适当组合。
常用方法
-
QStandardItemModel::QStandardItemModel(QObject *parent = Q_NULLPTR)
构造一个带有给定父对象的新项模型。 -
QStandardItemModel::QStandardItemModel(int rows, int columns, QObject *parent = Q_NULLPTR)
构造一个初始具有rows行和columns列的新项模型,并给它指定一个父对象。 -
QStandardItemModel::~QStandardItemModel()
销毁模型。模型会销毁所有的项。 -
voidStandardItemModel::appendColumn(const QList<QStandardItem *> &items)
追加一个包含项的列。如果需要,行数将增加到items的大小。 -
void QStandardItemModel::appendRow(const QList<QStandardItem *> &items)
追加一个包含项的行。如果需要,列数将增加到items的大小。 -
void QStandardItemModel::appendRow(QStandardItem *item)
这是一个重载函数。
当构建只有一列的列表或树时,此函数提供了一种方便的方法来追加一个新的项。 -
void QStandardItemModel::clear()
从模型中移除所有的项(包括标题项),并将行数和列数设为0。 -
[virtual] int QStandardItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
从QAbstractItemModel::columnCount()重新实现。 -
[virtual] QVariant QStandardItemModel::data(const QModelIndex &index, int role = QtDisplayRole) const
从QAbstractItemModel::data()重新实现。 -
[virtual] bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
从QAbstractItemModel::dropMimeData()重新实现。 -
QList<QStandardItem *> QStandardItemModel::findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const
返回与给定文本匹配的项列表,使用给定的标志,在给定列中进行搜索。 -
[virtual] Qt::ItemFlags QStandardItemModel::flags(const QModelIndex &index)
从QAbstractItemModel::flags()重新实现。 -
[virtual] bool QStandardItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
从QAbstractItemModel::hasChildren()重新实现。 -
QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
从QAbstractItemModel::headerData()重新实现。 -
QStandardItem *QStandardItemModel::horizontalHeaderItem(int column) const
返回指定列的水平标题项(如果已设置),否则返回。 -
[virtual] QModelIndex QStandardItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
从QAbstractItemModel::index()重新实现。 -
QModelIndex QStandardItemModel::indexFromItem(const QStandardItem *item) const
返回与给定项关联的QModelIndex。
在执行需要项的QModelIndex的操作时使用此函数,例如QAbstractItemView::scrollTo()。QStandardItem::index()提供了方便的方式来调用此函数。 -
void QStandardItemModel::insertColumn(int column, const QList<QStandardItem *> &items)
在指定列中插入包含项的列。如果需要,行数将增加到items的大小。 -
bool QStandardItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())
在指定的父项的子项中的指定列之前插入单个列。如果插入列成功则返回true否则返回false。 -
`[virtual] bool QStandardItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
从QAbstractItemModel::insertColumns()重新实现。 -
void QStandardItemModel::insertRow(int row, const QList<QStandardItem *> &items)
在指定行中插入包含项的行。如果需要,列数将增加到items的大小。 -
void QStandardItemModel::insertRow(int row, QStandardItem *item)
这是一个重载函数。
在指定行中插入包含item的行。
当构建只有一列的列表或树时,此函数提供了一种方便的方法来追加一个新的项。 -
bool QStandardItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())
在指定的父项的子项中的指定行之前插入单个行。如果插入行成功则返回true,否则返回false。 -
[virtual] bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
从QAbstractItemModel::insertRows()重新实现。 -
QStandardItem *QStandardItemModel::invisibleRootItem() const
返回模型的不可见根项。
通过QStandardItem API
,不可见的根项提供对模型的顶级项的访问,以使得可以以统一的方式处理顶级项及其子项;例如,涉及树模型的递归函数。
注意:调用从此函数获取的QStandardItem对象上的index()无效。 -
QStandardItem *QStandardItemModel::item(int row, int column = 0) const
返回给定行和列的项(如果已设置),否则返回0。 -
[signal] void QStandardItemModel::itemChanged(QStandardItem *item)
在项的数据发生更改时发出此信号。 -
[virtual] QMap<int, QVariant> QStandardItemModel::itemData(const QModelIndex &index) const
从QAbstractItemModel::itemData()重新实现。 -
QStandardItem *QStandardItemModel::itemFromIndex(const QModelIndex &index) const
返回与给定索引关联的QStandardItem指针。
在处理来自视图的基于QModelIndex的信号(如QAbstractItemView::activated())时,通常调用此函数是初始步骤。在您的槽中,您调用itemFromIndex(),传入信号携带的QModelIndex作为参数,以获得指向相应QStandardItem的指针。
注意,如果不存在指定索引处的项,此函数将懒惰地创建一个项(使用itemPrototype()),并在父项的子项表中设置它。
如果索引无效,则此函数返回0。 -
const QStandardItem *QStandardItemModel::itemPrototype() const
返回模型使用的项原型。当模型在需要按需构造新项时(例如,当视图或项代理调用setData()时),模型使用项原型作为项工厂。 -
[virtual] QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
从QAbstractItemModel::mimeData()重新实现。 -
[virtual] QStringList QStandardItemModel::mimeTypes() const
从QAbstractItemModel::mimeTypes()重新实现。 -
[virtual] QModelIndex QStandardItemModel::parent(const QModelIndex &child) const
从QAbstractItemModel::parent()重新实现。 -
[virtual] bool QStandardItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
从QAbstractItemModel::removeColumns()重新实现。 -
[virtual] bool QStandardItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
从QAbstractItemModel::removeRows()重新实现。 -
[virtual] int QStandardItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
从QAbstractItemModel::rowCount()重新实现。 -
void QStandardItemModel::setColumnCount(int columns)
将模型中的列数设置为columns。如果小于columnCount(),则将丢弃不需要的列的数据。 -
[v] bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
从QAbstractItemModel::setData重新实现。 -
[virtual] bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariantvalue, int role = Qt::EditRole)
从QItemModel::setHeaderData重新实现。 -
void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item)
将列column的水平标题项设置为item。模型将拥有该项。需要,将增加数以适应该项。先前的标题项(如果有)将被删除。 -
void QStandardItemModel::setHeaderLabels(const QStringList &labels)
使用labels设置水平标题签。如果需要,将增加列数以与标签大小相匹配。 -
void QStandardItemModel::setItem(int row, int column, QStandardItem *item)
将给定行和列项设置为item。模型将拥有该项。如果需要,增加行数和列数以适应该项。给定位置先前项(如果有)将被删除。 -
[virtual bool QStandardItemModel::setItem(const QModelIndex &index, const QMap<int,> &roles)
从QItemModel::setItemData()重新实现。 -
void QStandardItemModel::setItemPrototype(const QStandardItem *item)
将型的项原型设置为指定的项。模型将拥有该原型。
项原型通过依赖QStandardItem::clone()函数来充当QStandardItem工厂。要提供自己的原型子类化QStandardItem,重新实现QStandardItem::clone()并将原设置为您自定义类的实例。每当QStandardItemModel需要按需创建项(例如,当视图或项委托调用setData()时),新项将是您自定义类的实例。 -
void QStandardItemModelsetItemRoleNames(const QHash, QByteArray> &roleNames)
将项角色名称设置为roleNames。
void QStandardItemModel::setRowCount(int rows)
模型中的行数为rows。如果小于rowCount(),则丢弃不需要的行数据。 -
void StandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)
将行row的垂直标题项设置为item模型将拥有该项。如果需要,将加行数以适应该项。先前的标题项(有)将被删除。 -
void QStandardItemModel::setHeaderLabels(const QStringList &labels)
使用labels设置垂直标题标签。如果需要,将增加行数以与标签大小相匹配。 -
[virtual] QModelIndex QStandardItemModel::sibling(int row, int column, const QModelIndex &idx) const
从QAbstractItemModel::sibling()重新实现。 -
[virtual] void QStandardItemModel::sort(int, Qt::SortOrder order = Qt::Order)
从QAbstractItemModel::sort()重新实现。 -
[virtual] Qt::DropActions QStandardItemModel::supportedDropActions() const
从QAbstractItemModel::supportedDropActions()重新实现。
QStandardItemModel支持复制和移动。 -
QList<QStandardItem *> QModel::takeColumn(int column)
移除给定列而不删除列项,并指向删除的项的指针列表。模型释对项的所有权。对于未设置的列中的项,列表中相应指针将为0。 -
QStandardItem *QStandardItem::takeHorizontalHeaderItem(int column)
从中移除位于column的水平项而不删除它,并返回该项的指针。模型释放对该项的所有权。 -
QStandardItem *QStandardItemModel::take(int row, int column =0)
移除(row,column)位置的项,不删除它。模型释放对该项所有权。 -
QList<QStandardItem *> QModel::takeRow(int row)
移除给定行而不删除行项,并返回指向删除的项的指针列表。模型释放对项所有权。对于未设置的行中的项,列表中相应指针将为0。 -
QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)
从标题中移除位于row的垂直标题项而不删除,并返回该项的指。模型释放对项的所有权。 -
QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const
如果已设置,则返回row的垂直标题项;否则0。
示例
基于列表模型
#include <QtWidgets/QApplication>
#include <QtWidgets/QListView>
#include <QtGui/QStandardItemModel>
#include <QtGui/QStandardItem>
#include <QtCore/QModelIndex>
#include <QtCore/QDebug>
#include <QtCore/QObject>int main(int argc, char *argv[])
{QApplication a(argc, argv);QListView listView;QStandardItemModel model;// 添加行列数据QList<QStandardItem *> items;items.append(new QStandardItem(QStringLiteral("行1-列1")));items.append(new QStandardItem(QStringLiteral("行1-列2")));model.appendRow(items);items.clear();items.append(new QStandardItem(QStringLiteral("行2-列1")));items.append(new QStandardItem(QStringLiteral("行2-列2")));model.appendRow(items);// 设置modellistView.setModel(&model);// 处理item点击事件QObject::connect(&listView, &QListView::clicked, [&](const QModelIndex &index) {// 获取点击的itemQStandardItem *item = model.itemFromIndex(index);qDebug() << item->text();// 将item转换成indexQModelIndex indexFromItem = model.indexFromItem(item);// 将index转换成itemQStandardItem *itemFromIndex = model.itemFromIndex(indexFromItem);// 设置样式itemFromIndex->setBackground(QBrush(QColor(Qt::red)));});listView.show();return a.exec();
}
基于树模型
#include <QtWidgets>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建 QTreeView 和 QStandardItemModelQTreeView treeView;QStandardItemModel model;treeView.setModel(&model);// 创建列标题QStringList headerLabels;headerLabels << "Name" << "Size" << "Date Modified";model.setHorizontalHeaderLabels(headerLabels);// 添加数据QList<QStandardItem *> items;items << new QStandardItem("File1.txt") << new QStandardItem("10 KB") << new QStandardItem("2021-01-01");model.appendRow(items);// 获取点击的 item,并将 item 转换为 index 和 itemQObject::connect(&treeView, &QTreeView::clicked, [&model](const QModelIndex &index){QStandardItem *item = model.itemFromIndex(index);qDebug() << "Clicked item: " << item->text();});// 设置样式QString styleSheet = "QTreeView::item:selected { background-color: yellow; }";treeView.setStyleSheet(styleSheet);// 显示窗口treeView.show();return app.exec();
}
基于表格模型
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建模型QStandardItemModel model;model.setHorizontalHeaderLabels({"Name", "Age", "Gender"});// 添加数据QList<QStandardItem*> rowData;rowData << new QStandardItem("John") << new QStandardItem("25") << new QStandardItem("Male");model.appendRow(rowData);rowData.clear();rowData << new QStandardItem("Jane") << new QStandardItem("30") << new QStandardItem("Female");model.appendRow(rowData);// 创建表格视图QTableView tableView;tableView.setModel(&model);// 设置样式tableView.setStyleSheet("QTableView { border: 1px solid black } QTableView::item { padding: 5px }");// 获取点击的itemQObject::connect(&tableView, &QTableView::clicked, [&model](const QModelIndex& index){QStandardItem* item = model.itemFromIndex(index);if(item) {qDebug() << "Clicked item:" << item->text();}});// 当item改变时,触发QObject::connect(&model, &QStandardItemModel::itemChanged, [&model](QStandardItem *item){// QStandardItem* item = model.itemFromIndex(index);if(item) {qDebug() << "Changed item:" << item->text();}});// 显示表格视图tableView.show();return a.exec();
}
相关文章:

【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型
1. 引入 QStandardItemModel类提供了一个通用的模型,用于存储自定义数据。 以下是其用法:该类属于gui模块,因此在.pro中,需添加QT gui,如果已存在,则无需重复添加。 首先,引入头文件ÿ…...
mongodb 6/7的 windows安装问题
https://cloud.tencent.com/developer/article/2205068...
网站建设所需要的主要资源相关介绍
人力资源: 网站开发人员:前端开发、后端开发、UI/UX设计师等。 内容创作者:负责编写网站内容,包括文章、图片和视频。 项目经理:协调团队工作,确保项目按计划进行。 数字营销:帮助推广和市场…...

互联网上门预约洗衣洗鞋店小程序;
拽牛科技干洗店洗鞋店软件,方便快捷,让你轻松洗衣。只需在线预约洗衣洗鞋服务,附近的门店立即上门取送,省心省力。轻松了解品牌线下门店,通过列表形式展示周围门店信息,自动选择最近门店为你服务。简单填写…...

OSPF开放最短路径优先(Open Shortest Path First)协议
OSPF开放最短路径优先(Open Shortest Path First)协议 为克服RIP的缺点(限制网络规模,坏消息传得慢)在1989年开发出来的原理很简单,但实现很复杂使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)采用分布式的链路状态协议(link state protoco…...
数据结构(c语言版本) 字符串操作
作业要求 创建字符串插入、字符串、字符定位、求字串、删除某个字符、替换某个字符串、合并两个字符串 代码实现 #include <stdio.h> #include <string.h> #define MAXSIZE 100//定义结构体 struct SeqString{char data[MAXSIZE];int charlen; };//初始化 void …...
【Pyqt5】windows和linux安装Pyqt5+designer
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、windows安装二、linux安裝linux 安装pyqt5 designer 一、windows安装 PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc…...

【FPGA】Verilog:升降计数器 | 波纹计数器 | 约翰逊计数器 | 实现 4-bit 升降计数器的 UP/DOWN
目录 Ⅰ. 理论部分 0x00 升降计数器(UP DOWN Counter) 0x01 波纹计数器(Ripple Counter) 0x02 约翰逊计数器(Johnson Counter) Ⅱ. 实践部分 0x00 实现:升降计数器(4-bit&…...

使用uniapp写小程序,真机调试的时候不显示log
项目场景: 当小程序文件太大的情况下使用真机调试,但是真机调试的调试器没有任何反应 问题描述 使用uniapp写小程序,真机调试的时候不显示log 原因分析: 提示:因为真机调试的时候没有压缩文件,所以调试的…...
hive数据库delete删除部分数据/删除分区内的数据
Hive delete 删除部分数据 一、hive删除数据1.1、删除整个表1.2、删除表中的特定行1.3、删除表中的特定分区1.4、删除分区内的部分数据1.5、清空表中的所有数据 二、扩展2.1、dynamic partition on Crud si not disabled, please set hive.crud.dynamic.partitiontrue to enabl…...
C/C++条件编译:#ifdef、#else、#endif等
文章目录 #undef指令从C预处理器角度看已定义条件编译1.#ifdef、#else和#endif指令 #ifndef指令#ifndef指令通常用于防止多次包含一个文件程序使用#ifndef避免文件被重复包含 #if和#elif指令条件编译还有一个用途是让程序更容易移植 参考 程序员可能要为不同的工作环境准备C程序…...

基于51单片机步进电机节拍步数正反转LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)
基于51单片机步进电机节拍步数正反转LCD1602显示 📑1. 主要功能:📑2. 讲解视频:📑3. 仿真📑4. 程序代码📑5. 设计报告📑6. 设计资料内容清单&&下载链接📑[资料下…...

Vim 从何而来?
Vim 编辑器的创造者、维护者和终身领导者 Bram Moolenaar 为了纪念这位杰出的荷兰程序员,我们今天来聊一聊 Vim 的历史。 Vim 无处不在。它被很多人使用。同时 Vim 可能是世界上 “最难用的软件之一” ,但是又多次被程序员们评价为 最受欢迎的 代码编辑…...
Auto.js 清除指定应用缓存
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!Auto.js 清除指定应用缓存 环境 win10Pixel4Android13var packageName = ""; // 包名 var resu…...
[EFI]Surface Pro 4电脑 Hackintosh 黑苹果引导文件
硬件型号驱动情况主板Surface Pro 4处理器Intel Core i5-6300U 2.5GHz已驱动内存16GB DDR4 2400Mhz已驱动硬盘Samsung SSD 860 EVO 250G Media (Install on SSD External)已驱动显卡Intel HD Graphics 520 2GBmacOS 13以上自行添加显卡补丁声卡Realtek ALC3269(id 3…...

【Java 进阶篇】深入浅出:JQuery 事件绑定的奇妙世界
在前端的世界里,事件是不可或缺的一部分。用户的点击、输入、滚动等行为都触发着各种事件,而如何在代码中捕捉并处理这些事件是每位前端开发者必须掌握的技能之一。本文将带你深入浅出,探索 JQuery 中的事件绑定,为你揭开这个奇妙…...
Pair用法示例:
这里用到了 org.apache.commons.lang3.tuple.Pair 来封装数据(就是不想自己再写一个 DO 或者 VO 或者 MO) 在Java中,Pair是一种简单的数据结构,用于存储两个相关联的值。它没有特定的内置类,但可以通过自定义实现或使…...
rpc依赖安装
依赖: 0、boost:用于实现多线程等; 1、protobuf:用于实现数据的序列化、反序列化,也用于定义和生成rpc数据及接口; 2、libevent:用于实现基于IO多路复用机制的网络事件循环。 其实可以直接用包…...
文件存储服务 实时通信服务 HTTP通信协议
目录 文件存储服务实时通信服务HTTP通信协议 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 文件存储服务 文件存储服务是一种用于…...

Redis - 订阅发布替换 Etcd 解决方案
为了减轻项目的中间件臃肿,由于我们项目本身就应用了 Redis,正好 Redis 的也具备订阅发布监听的特性,正好应对 Etcd 的功能,所以本次给大家讲解如何使用 Redis 消息订阅发布来替代 Etcd 的解决方案。接下来,我们先看 R…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...