当前位置: 首页 > news >正文

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

目录

  • 0.前言
  • 1.List Widget
  • 2.Table Widget
  • 3.Tree Widget


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():获取该元素的⽗节点
http://www.lryc.cn/news/420160.html

相关文章:

  • /var/log/里面的文件具体是什么?linux的登录文件
  • JVM知识总结(双亲委派机制)
  • YOLOv2:更快更准的目标检测
  • 硬件工程师笔面试真题汇总
  • 【vue+marked】marked
  • 无人机之热成像篇
  • 浅谈C/C++指针和引用在Linux和Windows不同环境下的编码风格
  • 【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法
  • 代码随想录算法训练营第五十八天|拓扑排序精讲 、dijkstra(朴素版)精讲
  • 【ARM】ULINK Pro如何和SWD接口进行连接调试
  • react框架安全设计
  • Kafka生产调优实践。Kafka消息安全性、消息丢失、消息积压、保证消息顺序性
  • DDColor部署安装,在服务器Ubuntu22.04系统——点动科技
  • 使用 SSL/TLS 加密保障 RocketMQ 的安全传输
  • uni-app开发
  • 2024社招面经_存储DB广告架构方向
  • android10 系统定制:增加应用锁功能
  • 数据结构----队列
  • 【python】实现对文件夹中的图像连续重命名方法
  • 【nginx 第一篇章】认识一下 NGINX 服务器
  • 【物联网】(防水篇)哪些电子产品需要通过 IPX7 防水级别测试?
  • 高级java每日一道面试题-2024年8月09日-网络篇-什么是XSS攻击如何避免?
  • Linux时间管理:命令与脚本的完美结合
  • 基于ssm+vue+uniapp的微信外卖小程序
  • lvs(linux virtual server)实例
  • Unity游戏开发
  • 5. MQTT消息类型详解(三)
  • TypeScript JSX
  • java里的序列化反序列化、HttpMessageConverter、Jackson、消息转化器、对象转化器...都是啥?
  • GNU/Linux - memtool使用