当前位置:首页 » 《资源分享》 » 正文

[Qt][多元素控件]详细讲解

17 人参与  2024年09月09日 10:41  分类 : 《资源分享》  评论

点击全文阅读


目录

0.前言1.List Widget2.Table Widget3.Tree Widget


0.前言

Qt中提供的多元素控件有: 列表QListWidgetQListView 表格QTableWidgetQTableView 树形QTreeWidgetQTreeView WidgetView之间的区别,以QTableWidgetQTableView为例 QTableView是基于MVC设计的控件,QTableView⾃⾝不持有数据 View只负责实现视图,不负责数据如何存储表示,更不负责数据和视图之间的交互使⽤QTableView的时候需要⽤⼾创建⼀个Model对象(⽐如QStandardModel),并且把ModelQTableView关联起来 后续修改Model中的数据就会影响QTableView的显⽰修改QTableView的显⽰也会影响到Model中的数据(双向绑定) QTableWidget则是QTableView⼦类Model进⾏了封装 不需要⽤⼾⼿动创建Model对象,直接就可以往QTableWidget中添加数据 总结View是更底层的实现,Widget是基于View封装而来的

1.List Widget

QListWidget能够显⽰⼀个纵向的列表 列表中的每个元素就称为一个Item每个选项都可以被选中 核心属性currentRow:当前被选中的是第⼏⾏count:⼀共有多少⾏sortingEnabled:是否允许排序isWrapping:是否允许换⾏itemAlignment:元素的对⻬⽅式selectRectVisible:被选中的元素矩形是否可⻅spacing:元素之间的间隔 核心方法addItem(const QString& label) && addItem(QListWidgetItem* item):列表中添加元素currentItem():返回QListWidgetItem*,表⽰当前选中的元素setCurrentItem(QListWidgetItem* item):设置选中的那个元素setCurrentRow(int row):设置选中第⼏⾏的元素insertItem(const QString& label, int row) && insertItem(QListWidgetItem* item, int row):在指定的位置插⼊元素 row表示插入完毕之后,新元素在第几行 item(int row):返回QListWidgetItem*,表⽰第row⾏的元素takeItem(int row):删除指定⾏的元素,返回QListWidgetItem*表⽰是哪个元素被删除了 核心信号currentItemChanged(QListWidgetItem* current, QListWidgetItem* old):选中不同元素时会触发,参数是当前选中的元素和之前选中的元素currentRowChanged(int):选中不同元素时会触发,参数是当前选中元素的⾏数itemClicked(QListWidgetItem* item):点击某个元素时触发itemDoubleClicked(QListWidgetItem* item):双击某个元素时触发itemEntered(QListWidgetItem* item):⿏标进⼊元素时触发 上述介绍中,涉及到一个关键的类QListWidgetItem 这个类表示QListWidget中的一个元素,本质是"文本+图标"构成的核心方法setFont:设置字体setIcon:设置图标setHidden:设置隐藏setSizeHint:设置尺⼨setSelected:设置是否选中setText:设置⽂本setTextAlignment:设置⽂本对⻬⽅式

2.Table Widget

QTableWidget,表⽰⼀个表格控件 ⼀个表格中包含若⼲⾏,每⼀⾏⼜包含若⼲列表格中的每个单元格,是⼀个QTableWidgetItem对象 QTableWidget核心方法item(int row, int column):根据⾏数列数获取指定的QTableWidgetItem*setItem(int row, int column, QTableWidget*):根据行数列数设置表格中的元素currentItem():返回被选中的元素QTableWidgetItem*currentRow():返回被选中元素是第⼏⾏currentColumn():返回被选中元素是第⼏列row(QTableWidgetItem*):获取指定item是第⼏⾏column(QTableWidgetItem*):获取指定item是第⼏列rowCount():获取⾏数columnCount():获取列数insertRow(int row):在第row⾏处插⼊新⾏insertColumn(int column):在第column列插⼊新列removeRow(int row):删除第rowremoveColumn(int column):删除第columnsetHorizontalHeaderItem(int column, QTableWidget*):设置指定列的表头setVerticalHeaderItem(int row, QTableWidget*):设置指定⾏的表头 QTableWidget核心信号cellClicked(introw,intcolumn):点击单元格时触发cellDoubleClicked(int row, int column):双击单元格时触发cellEntered(int row, int column):⿏标进⼊单元格时触发currentCellChanged(int row, int column, int previousRow, int previousColumn):选中不同单元格时触发 QTableWidgetItem:核⼼⽅法 row():获取当前是第⼏⾏column():获取当前是第⼏列setText(const QString&):设置⽂本setTextAlignment(int):设置⽂本对⻬setIcon(const QIcon&):设置图标setSelected(bool):设置被选中setSizeHints(const QSize&):设置尺⼨setFont(const QFont&):设置字体

3.Tree Widget

QTreeWidget表⽰⼀个树形控件 ⾥⾯的每个元素都是⼀个QTreeWidgetItem,每个QTreeWidgetItem可以包含多个⽂本和图标,每个⽂本/图标为⼀个列可以给QTreeWidget设置顶层节点(顶层节点可以有多个),然后再给顶层节点添加⼦节点,从⽽构成树形结构 QTreeWidget核⼼⽅法clear:清空所有⼦节点addTopLevelItem(QTreeWidgetItem* item):新增顶层节点topLevelItem(int index):获取指定下标的顶层节点topLevelItemCount():获取顶层节点个数indexOfTopLevelItem(QTreeWidgetItem* item):查询指定节点是顶层节点中的下标takeTopLevelItem(int index):删除指定的顶层节点,返回QTreeWidgetItem*表⽰被删除的元素currentItem():获取到当前选中的节点,返回QTreeWidgetItem*setCurrentItem(QTreeWidgetItem* item):选中指定节点setExpanded(bool):展开/关闭节点setHeaderLabel(const QString& text):设置TreeWidgetheader名称 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:持有的⽂本icon:持有的图标font:⽂本字体hidden:是否隐藏disabled:是否禁⽤expand:是否展开sizeHint:尺⼨⼤⼩selected:是否选中 QTreeWidgetItem核⼼方法addChild(QTreeWidgetItem* child):新增⼦节点childCount():⼦节点的个数child(int index):获取指定下标的⼦节点,返回QTreeWidgetItem*takeChild(int index):删除对应下标的⼦节点removeChild(QTreeWidgetItem* child):删除对应的⼦节点parent():获取该元素的⽗节点

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/157236.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1