首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【QT】QT模型视图

模型/视图编程 Qt模型/视图架构用来实现大量数据存储、处理及显示。...Qt提供了一些现成模型来处理数据: QStringListModel存储简单QString项目列表; QStandardItemModel管理复杂属性结构数据,每一个数据可以包含任意数据;...模型索引QModeIIndex类提供对一块数据临时引用, 用来修改或检索模型数据,获取一个数据模型索引必须指定模型3个属性:行号、列号模型索引。...QListView将数据显示为一个列表;QTableView将模型数据显示一个表格QTreeView将模型数据显示具有层次列表。...QTableViewQTreeView显示项目的时候同时还可以显示标头,通过QHeaderView类实现。

2.9K10

借着学USB风, 用Qt做了个设备管理器

☆ START ☆ 开发环境UI设计 开发环境:vs2013+Qt5.6.0 UI设计: UI很简单,主要由QTreeViewQTextEdit两个控件组成: QTreeView:以树形列表形式按照设备类型枚举出计算机上所连接各类设备..., // 用于与设备信息集中安装设备实例相关联用户界面的顶级窗口句柄 _In_ DWORD Flags // 通过此参数来过滤指定设备信息集中设备, DIGCF_PRESENT...) 该函数第一个入口参数GUID指定了我们想要检索什么类型设备,它取值可以devguid文件查找,这里不一一列举。...,该变量接收要检索属性数据类型。...QTreeView实现了模型项目的树形表示。关于这个控件使用方式,比如添加条目(Item)、设置条目图片等代码里会体现,也可以自己查询Qt Assistant。

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

QTreeView使用总结13,自定义model示例,大大优化性能内存

示例只使用了10W数据量级 运行程序你就会发现,常规model初始化tree过程就比自定义model慢很多,更可怕是,它所占用内存开销是自定义model数倍甚至数十倍!...{ //1,QTreeView常用设置 QTreeView* t = ui->treeView; // t->setEditTriggers(QTreeView::NoEditTriggers...: Qt向你model请求一个索引为parent节点下面的rowcolumn列子节点元素,本函数里你需要返回该元素正确索引 //parent:获取指定元素父元素 //rowCount...只要能通过现有数据推算出来数据,都可以不存储! 比如我们只存储了基本3门课程分数,其他内容全为显示时视图向我们自定义model获取数据时实时计算得出!...因此,由于实际需要存储列数变少,内存占用又得到可观缩减。 不过这种好处只适用于多列数据有关联可推算情况。 我项目内存在大量此类数据,获得收益较大。 进一步了解可以阅读源码。

1.7K30

QTreeView+QAbstractItemModel自定义模型》:系列教程之三

我们要将数据显示到QTreeView,按照Model/View框架介绍,需要定义2个类TreeModelTreeItem,TreeModel继承于QAbstractItemModel,用于向View...QTreeView与TreeItem交互过程大致如下: 注意:,我们一般默认认为,只有column为0单元格才能添加下级单元格,也就是说树每一单元格只能与Column为0单元格建立父子关系...所以我们可以简单认为树,就是一单元格组成表格,只不过每一通过其首个单元格,建立了父子关系。...index.column列数据通过itemFromIndex()获取保存在索引indexTreeItem指针。...,此时QTreeView+QStandardItemModel更新任务信息,更新QTreeView中一共7列数据,也就是7个单元格数据,居然花了40ms。。。

4K10

QTreeView 使用

自定义数据 1、继承自QAbstractItemModel,实现相关模型。 2、通过QStandardItemModelQTreeView连用,用QStandardItem存储每个数据单元。...3、indentation:int 树控件每一缩进,默认为20。 4、itemsExpandable:bool 树控件是否能展开或收缩。...5、rootIsDecorated:bool 树控件顶层用以表示展开收缩小控件是否显示。如果只有一个层级树结构,可以设置该属性为false,让 他看起来更像简单list结构。...这个高度通过第一个Item获得,只有当该item数据改变,才会去更新。 当有大量数据时,可以将该属性设为true,以保证控件更快效率。...8、wordWrap:bool 每一文字遇到换行符时候是否换行。默认为false。 注意:即使设置该属性为true,也不能保证文字在过长时候被完全显示,都会出现省略号。

49710

Qt树形控件QTreeView使用1——节点添加删除操作

是ui中最常用控件,QtQTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装MFCCTreeCtrl很类似,没有mvc特点)。...QStandardItemModelQTreeView使用 使用QTreeView对应模型是 QStandardItemModel,这个是Qt对应ui界面最有用模型,它可以用于树形控件...、列表控件、表格控件等等条目有关控件。...QStandardItemModel用于列表表格控件还是很好理解,但是用于树形控件就有点难以理解了,实际上,树形控件, QStandardItemModel也挺简单。...通过QTreeView函数 currentIndex ()可以获取当前选中条目的QModelIndex,QModelIndex可以看做是QStandardItem数据封装,知道 QModelIndex

5K30

25.QT-模型视图

模型视图设计模式核心思想 使模型(数据)与视图(显示)相分离 模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据显示方式,无需数据如何组织存储数据发生改变时,会通过信号通知视图...当用户与视图进行交互时,会通过信号向模型发送交互信息  QT中提供了以下几种预定义模型: ?...QAbstractListModel:用来创建一维列表模型 QStandardItemModel:用来存储定制数据通用模型 QAbstractTableModel: 用来创建二维列表模型 常用视图类层次结构...Qt,不管模型以什么结构组织数据,都必须为每个数据提供不同索引值,使得视图能通过索引值访问模型具体数据QTreeView视图为例 QWidget w; QFileSystemModel...其中data ()setData() 函数参数role 是模型数据角色 role 数据角色 当role值不同时,则显示视图上方式也会不同 对于role角色,常用值有: Qt::DisplayRole

1.5K20

C++ Qt开发:TableView与TreeView组件联动

通常用于与视图组件(如 QTableView、QTreeView 等)一起使用。它提供了一个表格结构,可以包含列,每个单元格可以存储一个 QStandardItem 对象。...通过它,可以轻松管理操作模型选择状态,实现各种灵活用户交互。...上述方法提供了管理选择一些基本操作,包括清除选择、获取选中索引、设置选择模式策略,以及指定范围内进行选择操作。...QStandardItemModel 模型,然后将模型选择模型关联到 tableView treeView 上,最后通过循环将数据逐个添加到模型。...如下代码我们通过model->rowCount()以及model->columnCount()获取到父UI界面tableView表格行列数,并通过ptr->setRowColumn将这些数据设置到了子对话框编辑框上面

32110

pyqt5 列表控件_树形控件

目录 一.凡心所向,素履所往 二.树控件(QTreeWidget)基本用法 三.为树节点添加响应时间 四.增加,修改删除树控件节点 五.QTreeView控件与系统定制模式 ---- 一.凡心所向,...A是发小,和我同岁,但是比我大一级,但现在已经是国科大直博生在读,B是北邮研一在读。饭间讨论专业技术事,因为都是搞计算机,虽然方向不一样,但也算同行。...item=self.tree.currentItem()#获得当前单击 print('当前处于第%d'%index.row())#输出当前行(自己父节点第几个值)...__init__(parent) self.setWindowTitle('增加修改删除树控件节点') self.resize(400,300) operatorLayout=QHBoxLayout...item = self.tree.currentItem() # 获得当前单击 print('当前处于第%d' % index.row()) # 输出当前行(自己父节点第几个值) print

1.8K20

Qt Model View 预定义模型(二)

上次大家分享不区分模型视图带来方便情况下,可以直接使用Qt视图中简便子类,如QListWidget、QTableWidget、QTreeWidget等。...首先了解下几种预定义模型: QStringListModel用于存储QString简单列表QStandardItemModel管理更复杂项目树结构,每个项目都可以包含任意数据QFileSystemModel...提供有关本地文件系统文件目录信息QSqlQueryModel用于使用模型/视图约定访问数据库。...这次要给大家展示是对于同一个数据源,使用相同Model读取数据通过将该模型注册到不同View,所展现效果。以及对于同一个数据源使用不同Model,注册到View效果。...还有一个是通过代码insert到tabWidgettreeView,它与listViewtableView使用是同一个数据源,但是使用Model是QDirModel。

1.4K30

61.QT-QSortFilterProxyModel代理实现排序、过滤

将模型排序或者过滤后视图上显示,并且无需对模型数据进行任何转换,也无需对模型数据进行修改。...比如: 对某列筛选带有”xxx”关键字出来.并支持多则表达式 使用代理视图模型代码如下: QTreeView *treeView = new QTreeView; MyItemModel *sourceModel...QModelIndex &source_left, const QModelIndex &source_right) const { //通过当前视图中index位置获取model实际数据...regExp); //安装过滤器 proxyModel->setFilterKeyColumn(0); proxyModel->setFilterKeyColumn(2); //将第一列第三列同时是整数数据显示出来...index位置获取model实际数据 QVariant leftData = sourceModel()->data(source_left); QVariant rightData

5.2K30

Qt QListWidget详解

等),保存数据,这样就大大降低了数据冗余,提高了程序效率,但是需要我们对数据建模有一定了解,而QListWidget是一个升级版本QListView,它已经为我们建立了一个数据存储模型QListWidgetItem...insertItem(int row, QListWidgetItem *item) //row后添加一item QListWidgetItem * item(int row) //row...QListWidgetItem *takeItem(int row) //删除第row,注意qt不会给你释放内存,需要手动释放,只会从界面上删除该项 void clear() //清空界面 void...row=ui->listWidget->currentRow();//当前行 //QListWidgetItem* aItem=ui.listWidget->takeItem(row); //移除指定...,但不delete //delete aItem; //需要手工删除对象 //takeItem() 函数只是移除一个,并不删除对象,所以还需要用 delete 从内存删除它。

1.6K20

Qt Model_View_Delegate

定义 早期Qt:传统窗口部件,其本身内部包含,用于存储数据内置容器。...(直观,但是同步数据较低效) 当前Qt:模型 / 视图,model / View,窗口部件如Widget无需维护内部数据容器,其通过标准接口获得外部数据。...Model(模型):处理数据逻辑部分,通常负责在数据存取数据。 View(视图):用于数据显示部分,通常视图依靠模型数据而创建。 Controller(控制器):处理用户交互问题。...可以自定义委托 Ⅰ QTableWidget(不区分模型 / 视图)——已封装好,固定 QTableWidget每一个都使用一个QTableWidgetItem表示,tableWidget->item...QTableWidget没有这样功能,所以需要通过委托来实现,再所以就需要继承QItemDelegate,之后重新实现一些函数,Qt 重新封装OpenGL又有些类似。

1.6K20

Qt Designer基本控件介绍——Item Views(表项视图)Item Widgets(部件)

两者关系: Item Views(Model-Based)类内控件是Item Widgets(Item-Based)内对应控件父类, 如QTreeWidget是从QTreeView派生。...Item Widgets开发没有Item Views灵活,实际上Item Widgets就是Item Views基础上绑定了一个默认存储并提供了相关方法。...,提高了程序效率,但是需要我们对数据建模有一定了解,初学者就先不要考虑了,而QListWidget是一个升级版本QListView,它已经自己为我们建立了一个数据存储模型(QListWidgetItem...)” “QListWidget QListView区别” ---- Tree view :视图类,需要手动给他指定模型类,才能够显示数据QTreeView要灵活些。...,用于应用程序实现撤消/重做功能。

5.9K00

简述ElasticSearch里面复杂关系数据存储方式

传统数据库里面,对数据关系描述无外乎三种,一对一,一对多多对多关系,如果有关联关系数据,通常我们在建表时候会添加主外键来建立数据联系,然后查询或者统计时候通过join来还原或者补全数据,最终得到我们需要结果数据...当然,现实数据肯定是有关,那么es里面是如何处理管理这些带有关数据呢?...二,使用nested[object]类型,存储拥有多级关系数据 方案一里面,我们指出了array存储数组对象,并不是严格意义关系,因为第二层数据是没有分离,如果想要分离,就必须使用nested...使用parent/children管理关联关系时,es会在每个shard内存维护一张关系表,检索时,通过has_parenthas_child过滤器来得到关联数据,这种模式下父文档与子文档也是独立...,查询性能会比nested模式稍低,因为父文档子文档插入时候会通过route使得他们都分布同一个shard里面,但并不保证同一个lucenesengment索引段里面,所以检索性能稍低,除此之外

5.1K70

2022最新ES面试题整理(Elasticsearch面试指南系列)「建议收藏」

term:匹配搜索词完全相等结果 terms:匹配搜索词列表任意匹配结果 range:范围查找 4.2.4 过滤器-Filter 4.2.5 组合查询-Bool query 4.2.6...,第一数字bit仅代表当前index位置上是否存储了数字,如果存储了就记作1,否则记为0,存储数字值就是其index,并且存储这四个数字只使用了一个字节。...不过这种存储方式问题就是,存储数字不能包含重复数字,并且Bitmap大小是固定,不管是否存储了数值,不管存储了几个值,占用空间都是恒定,只bit长度有关系。...通过观察不难发现,无论任何一个Term,无外乎由26个英文字母组成,这也就意味越多就会造成越多数据“重复”。...Lucene存储这种有重复字符数据时候,只会存储一次,也就是哪怕有一亿个以abandon为前缀,“abandom”这个前缀也只会存储一次。

6.6K33

python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例

当把标准 item 模型结合 QTreeView 使用时,可以得到更灵活使用方法,从而把“数据“显示”分离开。...insertTopLevelItems() 视图顶层索引引入项目的列表 expandAll() 展开所有节点树形节点 invisibleRootItem() 返回树形控件不可见根选项(Root...setIcon(column,icon) 指定显示图标 QTreeWidget树形结构控件实例 树形结构是通过QTreeWidgetQTreeWidgetItem类实现,其中QTreeWidgetItem...系统定制模式实例 在上面的例子,QTreeWidgetItem类节点是一个个添加上去,这样有时很不方便,特别是窗口产生比较复杂树形结构时,一般都是通过QTreeView类来实现,而不是QTreeWidget...类,QTreeViewQTreeWidget类最大区别就是,QTreeView类可以使用操作系统提供定制模式,比如文件系统盘树列表 import sys from PyQt5.QtWidgets

3.2K21

QTreeWidget 简介「建议收藏」

() 视图顶层索引引入项目的列表 expandAll() 展开所有节点树形节点 invisibleRootItem() 返回树形控件不可见根选项(Root Item) selectionItems...setCheckState(column.state) 设置指定列选中状态: Qt.Checked:节点选中 Qt.Unchecked:节点没有选中 setIcon(column,icon) 指定显示图标...实例:树形结构实现 树形结构是通过QTreeWidgetQTreeWidgetItem类实现,其中QTreeWidgetItem类实现了节点添加,其完整代码如下 import sys from...QTreeWidgetItem类节点是一个个添加上去,这样有时很不方便,特别是窗口产生比较复杂树形结构时,一般都是通过QTreeView类来实现,而不是QTreeWidget类,QTreeView...QTreeWidget类最大区别就是,QTreeView类可以使用操作系统提供定制模式,比如文件系统盘树列表 import sys from PyQt5.QtWidgets import * from

1.3K40
领券