[Qt][多元素控件]详细讲解
DieSnowK 2024-08-13 09:05:04 阅读 88
目录
0.前言1.List Widget2.Table Widget3.Tree Widget
0.前言
Qt中提供的多元素控件有:
列表:
<code>QListWidgetQListView
表格:
QTableWidget
QTableView
树形:
QTreeWidget
QTreeView
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()
:获取该元素的⽗节点
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。