目录
0.前言1.List Widget2.Table Widget3.Tree Widget
0.前言
Qt中提供的多元素控件有:
列表:
QListWidgetQListView 表格:
QTableWidgetQTableView 树形:
QTreeWidgetQTreeView Widget和View之间的区别,以
QTableWidget和
QTableView为例
QTableView是基于MVC设计的控件,
QTableView⾃⾝不持有数据 View只负责实现视图,不负责数据如何存储表示,更不负责数据和视图之间的交互
使⽤QTableView的时候需要⽤⼾创建⼀个Model对象(⽐如QStandardModel),并且把Model和QTableView关联起来 后续修改
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):删除第
row⾏
removeColumn(int column):删除第
column列
setHorizontalHeaderItem(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):设置
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:持有的⽂本
icon:持有的图标
font:⽂本字体
hidden:是否隐藏
disabled:是否禁⽤
expand:是否展开
sizeHint:尺⼨⼤⼩
selected:是否选中
QTreeWidgetItem核⼼方法:
addChild(QTreeWidgetItem* child):新增⼦节点
childCount():⼦节点的个数
child(int index):获取指定下标的⼦节点,返回
QTreeWidgetItem*takeChild(int index):删除对应下标的⼦节点
removeChild(QTreeWidgetItem* child):删除对应的⼦节点
parent():获取该元素的⽗节点