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


0.前言

  • Qt中提供的多元素控件有:
    • 列表
      • QListWidget
      • QListView
    • 表格
      • QTableWidget
      • QTableView
    • 树形
      • QTreeWidget
      • QTreeView
  • 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):删除第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):设置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():获取该元素的⽗节点
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieSnowK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值