Qt学习-22 <QTreeWidget QTreeView>

news2025/2/27 7:31:13

—均为学习笔记,如有错误请指出


一、QTreeWidget

1. 样式展示:

① 

② 

2. 样式代码:

① 

//treeWidget树控件的使用
    //设置水平头
    //QStringList() 创建匿名对象,省略起名的操作
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
 
 
    //创建根节点
    QTreeWidgetItem * liitem = new  QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * minitem = new  QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * zhiitem = new  QTreeWidgetItem(QStringList()<<"智力");
 
 
    //加载顶层的节点(根节点)
    ui->treeWidget->addTopLevelItem(liitem);
    ui->treeWidget->addTopLevelItem(minitem);
    ui->treeWidget->addTopLevelItem(zhiitem);
 
 
    //追加子节点
    //力量
    QStringList heroL1;
    heroL1<<  "刚被猪e"  <<  "前排坦克,能在吸收伤害的同时造成可观的范围输出e" ;
    QTreeWidgetItem * l1 = new  QTreeWidgetItem(heroL1);
    liitem->addChild(l1);
    QStringList heroL2 ;
    heroL2<<  "船长e"  <<  "前排坦克,能肉能输出能控场的全能英雄e" ;
    QTreeWidgetItem * l2 = new  QTreeWidgetItem(heroL2);
    liitem->addChild(l2);
    //敏捷
    QStringList heroM1 ;
    heroM1<<  "月骑e"  <<  "中排物理输出,可以使用分裂利刃攻击多个目标e" ;
    QTreeWidgetItem * m1 = new  QTreeWidgetItem(heroM1);
    minitem->addChild(m1);
    QStringList heroM2;
    heroM2 <<  "小鱼人e"  <<  "前排战士,擅长偷取敌人的属性来增强自身战力e" ;
    QTreeWidgetItem * m2 = new  QTreeWidgetItem(heroM2);
    minitem->addChild(m2);
    //智力
    QStringList heroZ1;
    heroZ1 <<  "死灵法师e"  <<  "前排法师坦克,魔法抗性较高,拥有治疗技能e" ;
    QTreeWidgetItem * z1 = new  QTreeWidgetItem(heroZ1);
    zhiitem->addChild(z1);
    QStringList heroZ2;
    heroZ2 <<  "巫医e"  <<  "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友e" ;
    QTreeWidgetItem * z2 = new  QTreeWidgetItem(heroZ2);
    zhiitem->addChild(z2);

    QStringList topTitle;
 
    QTreeWidgetItem* treeWidgetItem_1;
    QTreeWidgetItem* treeWidgetItem_2;
    QTreeWidgetItem* treeWidgetItem_3;
 
    QTreeWidgetItem* treeItem_1;
    QTreeWidgetItem* treeItem_2;
    QTreeWidgetItem* treeItem_3;
 
    QStringList sTreeList_1,sTreeList_2,sTreeList_3;
    QStringList sTreeItemList_1,sTreeItemList_2,sTreeItemList_3;
 
 
    //创建项目
    treeWidgetItem_1 = new QTreeWidgetItem(sTreeList_1);
    treeWidgetItem_2 = new QTreeWidgetItem(sTreeList_2);
    treeWidgetItem_3 = new QTreeWidgetItem(sTreeList_3);
 
    treeItem_1=new QTreeWidgetItem(sTreeItemList_1);
    treeItem_2=new QTreeWidgetItem(sTreeItemList_2);
    treeItem_3=new QTreeWidgetItem(sTreeItemList_3);
    
    sTreeList_1 << "顶级条目0-第1列" << "顶级条目0-第2列" << "顶级条目0-第3列" << "顶级条目0-第4列" << "顶级条目0-第5列";
    sTreeList_2 << "顶级条目1-第1列" << "顶级条目1-第2列" << "顶级条目1-第3列" << "顶级条目1-第4列" << "顶级条目1-第5列";
    sTreeList_3 << "顶级条目2-第1列" << "顶级条目2-第2列" << "顶级条目2-第3列" << "顶级条目2-第4列" << "顶级条目2-第5列";
 
    sTreeItemList_1 << "子条目0-第1列" << "子条目0-第2列" << "子条目0-第3列" << "子条目0-第4列" << "子条目0-第5列";
    sTreeItemList_3 << "子条目1-第1列" << "子条目1-第2列" << "子条目1-第3列" << "子条目1-第4列" << "子条目1-第5列";
    sTreeItemList_2 << "子条目2-第1列" << "子条目2-第2列" << "子条目2-第3列" << "子条目2-第4列" << "子条目2-第5列";
3. 用法介绍(结果参照样式②)

参考文章

1). 设置列
//设置
ui->treeWidget->setColumnCount(int number);
 //获取
ui->treeWidget->columnCount();
2). 设置宽高
//设置宽高
ui->treeWidget->resize(x,y);
3).设置列表头
topTitle << "title0" << "title1" << "title2" << "title3" << "title4";
ui->treeWidget->setHeaderLabels(topTitle);
4). 设置复选框
//设置复选框     
  treeWidgetItem_2->setCheckState(int index,Qt::PartiallyChecked);

//参数一: 复选框的位置  列序号  
//参数二: 枚举值:
Qt::Unchecked  // 没选中;
Qt::Checked  // 选中;
Qt::PartiallyChecked  // 部分选中
5). 添加树
①. 添加顶层项目
//添加顶层项目
ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
ui->treeWidget->addTopLevelItem(treeWidgetItem_2);


ui->treeWidget->addTopLevelItem(item);
②. 插入顶层项目
//插入顶层项目
ui->treeWidget->insertTopLevelItem(0,treeWidgetItem_3);


ui->treeWidget->insertTopLevelItem(int column,item);
③. 添加子项
//给项目添加子项
treeWidgetItem_1->addChild(treeItem_1);
treeWidgetItem_1->addChild(treeItem_2);
treeWidgetItem_1->addChild(treeItem_3);


item->addChild(item_);  //item 顶级条目  item_ 子项
④. 其他添加函数
//获取顶层条目总数
ui->treeWidget->topLevelItemCount();



/* 树形控件顶级条目的操作比较类似 QListWidget 的列表条目操作函数。
新建条目之后,可以用如下函数把条目添加到树形控件的顶级条目列表末尾: */
//添加一个顶级条目到末尾
void QTreeWidget::​addTopLevelItem(QTreeWidgetItem * item)  
//添加多个顶级条目到末尾
void QTreeWidget::​addTopLevelItems(const QList<QTreeWidgetItem *> & items) 
//如果希望将条目插入到指定顶级条目列表的 index 序号位置,使用如下函数:
void QTreeWidget::​insertTopLevelItem(int index, QTreeWidgetItem * item)
void QTreeWidget::​insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
/* 树形控件所有的顶级条目父节点指针都为 NULL 
(父节点是指树形层次中的节点关系,而条目的父控件依然是树形控件本身)。 */
//添加了顶级条目之后,可以对顶级条目进行计数:
int QTreeWidget::​topLevelItemCount() const
6). 删除树
//删除子项目
treeWidgetItem_1->takeChild(2);

//删除顶级条目
ui->treeWidget->takeTopLevelItem(2);
7).查询树
① 查询对应条目
ui->treeWidget->topLevelItem(int index);
② 查询对应序号
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);
8).树条目操作
① 当前选中行、列
ui->treeWidget->currentItem();
ui->treeWidget->currentColumn();
② 设置选中行、列
//设置选中行
ui->treeWidget->setCurrentItem(treeWidgetItem_1);
//设置选中某行某列
ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);
③ 设置条目选中
//设置选中行
ui->treeWidget->setCurrentItem(treeWidgetItem_1);
④ 当前选中行的上一个选中行
//当前选中行 上一个选中行
ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);
9). 树排序
① 设置自动排序
//获取
ui->treeWidget->isSortingEnabled();
//设置
ui->treeWidget->setSortingEnabled(true);
② 升序降序
//升序
ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);
//降序
ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);
10). 树查找
QString text = "顶级条目2-第2列";
Qt::MatchFlags flags;
ui->treeWidget->findItems(text, flags, 0);
bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
11). 清空树
//清空控件
void MainWindow::on_pushButton_2_clicked()
{
    ui->treeWidget->clear();
}
12). 折叠树
//折叠控件
void MainWindow::on_pushButton_3_clicked()
{
    ui->treeWidget->collapseItem(treeWidgetItem_1);
}
13). 展开树
//展开控件
void MainWindow::on_pushButton_4_clicked()
{
    ui->treeWidget->expandItem(treeWidgetItem_1);
}
14). 滚动指定条目
//滚动到指定条目
void MainWindow::on_pushButton_5_clicked()
{
    void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}
15). 树单击信号
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);
16). 树双击信号
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
17). 树展开信号
void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item);
18). 树折叠信号
void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item);
19). 列数据变化信号
void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column);

二、QTreeView

参考文章

1. 介绍

QTreeView类继承于QAbstractItemView类,提供了一个树结构视图的模型

QTreeView实现了模型中项目的树表示,模型/视图架构确保树视图的内容随着模型的变化而更新,具有子项的项目可以处于展开或折叠状态

例:构建一个树视图显示模型中的数据


QStandardItemModel *model = new QStandardItemModel;
ui->treeView->setModel(model);

//一级节点
QStandardItem * item = new QStandardItem;
item->setText("一级节点");
model->appendRow(item);
// ui->treeView->setHeaderHidden(true); //设置标题显示与否
ui->treeView->expandAll();  //设置子节点全部展开

//二级节点  (item:此二级节点的父节点)
QStandardItem * item_2= new QStandardItem;
item_2->setText("二级节点");
item_2->setCheckable(true); //设置复选框
item_2->setCheckState(Qt::Checked);
item->appendRow(item_2);

 

2. 样式展示:

3. 样式代码:
QStandardItemModel *model = new QStandardItemModel;
ui->treeView->setModel(model);
QStandardItem *item = new QStandardItem;
item->setText("000");
model->appendRow(item);
insterTreeNode("aaa",item);
insterTreeNode("bbb",item);
insterTreeNode("ccc",item);
insterTreeNode("ddd",item);
ui->treeView->expandAll();
 
void MainWindow::insterTreeNode(QString str,QStandardItem *parent)
{
    QStandardItem *item = new QStandardItem;
    item->setText(str);
    parent->appendRow(item);
}
4. 属性
1). allColumnsShowFocus

表示项是否应该使用所有列显示键盘焦点,默认值为false

//获取
ui->treeView->allColumnsShowFocus();  
//设置
//true所有列将显示焦点,否则只有一列显示
ui->treeView->setAllColumnsShowFocus(bool enable);
2). animated

表示树视图折叠或者展开分支时是否启用动画,默认为False

//获取
ui->treeView->isAnimated(); 
//设置
ui->treeView->setAnimated(bool enable);//false 不显示动画,true 显示动画
3). expandsOnDoubleClick

表示是否双击展开节点,默认为True

//获取
ui->treeView->expandsOnDoubleClick();
//设置
ui->treeView->setExpandsOnDoubleClick(bool enable);
4). headerHidden

表示是否隐藏头标题,默认false

//获取
ui->treeView->isHeaderHidden();
//设置
ui->treeView->setHeaderHidden(bool hide);
5). autoExpandDelay

表示在拖放操作期间打开或关闭树中的项之前的延迟时间(以毫秒为单位)。

如果时间被设置小于0,那么将不会被激活。

默认情况下值为-1,即禁用自动扩展。

//获取
ui->treeView->autoExpandDelay();
//设置
ui->treeView->setAutoExpandDelay(int delay);
6). indentation

表示树视图中每个级别的项目以像素为单位测量的缩进。对于顶级项目,缩进指定从视口边缘到第一列项目的水平距离,对于子项,它指定它们与父项之间的缩进。

默认情况下,值与样式相关。因此,当样式更改时,此属性将从它更新,调用setIndentation( )停止更新,调用resetIndentation()将恢复默认行为。

ui->treeView->indentation();
//停止更新
ui->treeView->setIndentation(int i);
//恢复默认
ui->treeView->resetIndentation();
7). itemsExpandable

表示用户是否可以交互展开和折叠项,默认true

//获取
ui->treeView->itemsExpandable();
//设置
ui->treeView->setItemsExpandable(bool enable);
8). rootlsDecorated

表示是否显示 (展开和折叠顶级项的)控件,默认为true

带有子项目的项目通常显示为展开和折叠他们的控件,从而允许显示或隐藏它们的子项目:若此属性为false,则不会为顶级项显示这些控件。这可以使单个级别的树结构看起来像一个简单的项目列表。

//获取
ui->treeView->rootIsDecorated();
//设置
ui->treeView->setRootIsDecorated(bool show);
9). sortingEnabled

表示是否启用排序,默认为false

//获取
ui->treeView->isSortingEnabled();
//设置
ui->treeView->setSortingEnabled(bool enable);
10). uniformRowHeights

表示是否让视图中的所有项目具有相同的高度,默认false

只有在保证视图中的所有项具有相同高度时,才应该将此属性设置为true

///获取
ui->treeView->uniformRowHeights();
//设置
ui->treeView->setUniformRowHeights(bool uniform);
11). wordWrap

表示是否启用换行,默认false;

启用该属性,则文本将在需要的位置进行换行;

若不换行则需要设置 textElideMode(把超出范围的值显示为省略号)

//获取
ui->treeView->wordWrap();
//设置
ui->treeView->setWordWrap(bool on);
5. 公共函数
1). columnAt

返回给定x坐标所在的行序号

ui->treeView->columnAt(int x);
2). columnViewportPosition

返回给定行号所在的视窗中的水平位置

ui->treeView->columnViewportPosition(int column);
3-1). columnWidth

返回给定行号的宽度

ui->treeView->columnWidth(int column);
3-2). setColumnWidth

设置给定行号的宽度

ui->treeView->setColumnWidth(int column,int width);
4). header

返回头标题信息,封装在QHeaderView中

QHeaderView *header() const
5). indexAbove

返回在给定模型上面的模型

QModelIndex indexAbove(const QModelIndex &index) const
6). indexBelow

返回在给定模型下面的模型

QModelIndex indexBelow(const QModelIndex &index) const
7). isColumnHidden

返回给定的列是否隐藏

QModelIndex indexBelow(const QModelIndex &index) const
8). isRowHidden

返回给定的行是否隐藏

bool isRowHidden(int row, const QModelIndex &parent) const
9-1). isFirstColumnSpanned

如果父元素给定行的第一列中的项跨越所有列,则返回true,否则返回false

bool isFirstColumnSpanned(int row, const QModelIndex &parent) const
9-2). setFirstColumnSpanned

如果span为true,则具有给定父元素的行中第一列中的项被设置为跨所有列,否则显示该行上的所有项。

void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span)
10-1) . setTreePosition 

指定树结构应该放在逻辑索引处。如果设置为-1,则树将始终跟随视觉索引为0

ui->treeView->setTreePosition(int index);
10-2). treePosition

返回设置树的逻辑索引。如果返回值为-1,则树被放置在可视索引0上

ui->treeView->treePosition();
6. 公共槽函数
1). collapse

折叠给定的节点

void collapse(const QModelIndex &index)
2). collapseAll

折叠全部的节点

ui->treeView->collapseAll();
3). expand

展示给定的节点

void expand(const QModelIndex &index)
4). expandAll

展示全部节点

ui->treeView->expandAll();
5). expandRecursively

将给定索引处的项目及其所有子项扩展到给定深度。(深度是相对于给定索引的)深度为-1将扩展所有子项,深度为0将仅扩展给定索引。

如果模型包含大量项目,此功能将需要一些时间来执行

void expandRecursively(const QModelIndex &index, int depth = -1)
6). expandToDepth

将所有可扩展项目扩展到给定深度;

展开节点带深度,如果是-1展开全部节点,如果是0则展开给定的索引

void expandToDepth(int depth)
7). hideColumn

隐藏给定的列

ui->treeView->hideColumn(int column);
8). resizeColumnToContents

恢复列的宽度设置

ui->treeView->resizeColumnToContents(int column);
9). showColumn

展示给定的列

ui->treeView->showColumn(int column);
10). sortByColumn

升序或降序进行排列

ui->treeView->showByColumn(int column,Qt::SortOrder order);

//例 Qt::SortOrder order = Qt::AscendingOrder

7. 信号
1). collapsed

有节点折叠的时候信号产生

void collapsed(const QModelIndex &index)
2). expand

有节点展开时信号产生

void expanded(const QModelIndex &index)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Data Concerns Modeling Concerns

How was the data you are using collected? What assumptions is your model making by learning from this dataset? Is this dataset representative enough to produce a useful model? How could the results of your work be misused? What is the intended use and …

java数据结构与算法刷题-----LeetCode77. 组合

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 递归实现 解题思路 这种题只能暴力求解&#xff0c;枚举所有可…

【OD】算法二

开源项目热度榜单 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、…

Linux的进程调度实现

经常被问到进程的调度算法有哪些&#xff0c;什么先进先出、短进程优先、时间片轮转、多级反馈多列等等算法能说一大堆&#xff1f;那具体的&#xff0c;linux内核使用了什么样的算法&#xff0c;且来探究一下。 本文所引用源码基于linux内核2.6.34版本。 目录 调度器类 从 s…

[Java安全入门]三.CC1链

1.前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库&#xff0c;它提供了很多强大的数据结构类型和实现了各种集合工具类。Commons Collections触发反序列化漏洞构造的链叫做cc链&#xff0c;构造方式多种&#xff0c;这里先学习cc1链…

C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码

1 微分方程 含有导数或微分的方程称为微分方程&#xff0c;未知函数为一元函数的微分方程称为常微分方程。 微分方程的阶数 微分方程中导数或微分的最高阶数称为微分方程的阶数。 微分方程的解 使得微分方程成立的函数称为微分方程的解。 微分方程的特解 微分方程的不含任意…

SQLite3中的callback回调函数注意的细节

调用 sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)该例程提供了一个执行 SQL 命令的快捷方式&#xff0c; SQL 命令由 sql 参数提供&#xff0c;可以由多个 SQL 命令组成。 在这里&#xff0c; 第一个参数 sqlite3 是打开的数据库对…

Windows下同一电脑配置多个Git公钥访问不同的账号

前言 产生这个问题的原因是我在Gitee码云上有两个账号,为了方便每次不用使用http模式推拉代码,于是我就使用了ssh的模式,起初呢我用两台电脑分别连接两个账号,用起来也相安无事,近段时时间台式机在家里,我在外地出差了,就想着把ssh公钥同时添加到不同的账号里,结果却发现不能用…

芯片顶级盛会Hotchips2019年-AI的崛起之年-未来芯片论坛及资料下载

提示&#xff1a;下载链接在文章最后。 是什么&#xff1f; HOTCHIPS是一个关于计算机体系结构和电子设计的会议&#xff0c;主要探讨芯片设计、存储器、能源效率、机器学习和人工智能等方面的发展。该会议每年都会召开一次&#xff0c;吸引着来自世界各地的专业人士和研究人…

垃圾回收:JavaScript内存管理的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

数据库中 SQL Hint 是什么?

前言 最近在调研业界其他数据库中 SQL Hint 功能的设计和实现&#xff0c;整体上对 Oracle、Mysql、Postgresql、 Apache Calcite 中的 SQL Hint 的设计和功能都进行了解&#xff0c;这里整理一篇文章来对其进行梳理&#xff0c;一是帮助自己未来回顾&#xff0c;加深自己的思…

全国月平均水汽压空间分布数据、月均降水量空间分布数据、月均太阳辐射空间分布数据、月均风速空间分布数据

我国幅员辽阔&#xff0c;地形复杂&#xff0c;位于亚欧大陆东部&#xff0c;太平洋西岸。气候特征为&#xff1a;季风气候明显&#xff0c;大陆性气候强&#xff0c;气候类型复杂多样&#xff0c; 水热 同期。我国降水量在空间上&#xff0c;东多西少,南多北少&#xff1b;从东…

鸿蒙培训开发:就业市场的新热点~

金三银四在即&#xff0c;随着春节假期结束&#xff0c;各行各业纷纷复工复产&#xff0c;2024年的春季招聘市场也迎来了火爆的局面。最近发布的《2024年春招市场行情周报&#xff08;第一期&#xff09;》显示&#xff0c;尽管整体就业市场仍处于人才饱和状态&#xff0c;但华…

软考高级:信息系统开发方法1(原型法、结构法等)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

JavaWeb基础入门——(二)MySQL数据库基础(2-SQL 结构化查询语言)

四、MySQL逻辑结构 4.1 逻辑结构 4.1 记录 五、SQL 结构化查询语言 5.1 SQL概述 SQL&#xff08;Structural Query Language&#xff09;结构化查询语言&#xff0c;用于存取、查询、更新数据以及管理关系型数据库系统 5.1.1 SQL发展 SQL是在1981年由IBM公司推出&#xff0c;…

Qt 拖动事件

文章目录 1 自定义控件 TextEdit2 实现打开文件功能3 实现鼠标滚轮放大字体 QEvent::DragEnter 当拖动文件进入到窗口/控件中时&#xff0c;触发该事件&#xff0c;它对应的子类是QDragEnterEvent QEvent::DragLeave 当拖动文件离开窗口/控件时&#xff0c;触发该事件&#xff…

20、电源管理入门之Hypervisor中的电源管理

目录 1. Hypervisor概念介绍 2. 汽车软件中的Hypervisor应用 3. QNX Hypervisor 4. Hypervisor中的多OS通信技术 5. 电源管理相关 参考: 很多时候听说Hypervisor,但是对底层软件技术不了解的人感觉挺神秘。本篇文章简单介绍下Hypervisor的基本概念,另外介绍下电影管理…

多数码管(Arduino)

图示 /*该程序的作用是演示动态扫描原理。在线文档&#xff1a;https://docs.geeksman.com/esp32/Arduino/08.esp32-arduino-4-digits-7segment.html */// 定义位选线引脚 int seg_1 5; int seg_2 18; int seg_3 19; int seg_4 21;// 定义位选线数组 int seg_array[4] {se…

ABAP接口部分-C#调用RFC

目录 ABAP接口部分-C#调用RFC创建表结构创建RFC函数创建C#项目引用SAP .Net Connector包绘制窗口的控件最终布局代码 项目配置报错SAP.Middleware.Connector.RfcDestinationManager报错SAP.Middleware.Connector.RfcLoginexception报错SAP.Middleware.Connector.RfcInvalidStat…

LLM 推理优化探微 (3) :如何有效控制 KV 缓存的内存占用,优化推理速度?

编者按&#xff1a; 随着 LLM 赋能越来越多需要实时决策和响应的应用场景&#xff0c;以及用户体验不佳、成本过高、资源受限等问题的出现&#xff0c;大模型高效推理已成为一个重要的研究课题。为此&#xff0c;Baihai IDP 推出 Pierre Lienhart 的系列文章&#xff0c;从多个…