列表控件列表表格树

QListWidget

QListWidget 是 Qt 框架中的一个部件,用于在图形用户界面中显示一个列表。这个列表可以包含文本项、图标或者其他自定义的部件。它非常适合用于呈现一系列可选择的元素。

基本属性和设置

  1. NoSelection:不允许选择。用户无法选择任何项。

  2. SingleSelection:单选。一次只能选择一个项。

  3. MultiSelection:多选。用户可以通过点击来选择多个项,而不需要按住键盘上的任何键。

  4. ExtendedSelection:扩展选择。用户可以通过单击选择单个项,通过Ctrl键单击来切换项的选择状态,或者通过Shift键单击来选择一系列项。

  5. ContiguousSelection:连续选择。用户可以通过单击选择单个项,或者通过Shift键单击来选择一系列连续的项。

遍历元素和编辑列表的实现

    • triggers:是一个位掩码,指定了编辑的触发条件。

常用的编辑触发条件包括:

  • QAbstractItemView::NoEditTriggers:不允许编辑。
  • QAbstractItemView::CurrentChanged:当当前项改变时触发编辑。
  • QAbstractItemView::DoubleClicked:双击项时触发编辑。
  • QAbstractItemView::SelectedClicked:单击选中的项时触发编辑。
  • QAbstractItemView::EditKeyPressed:按下编辑键(例如 Enter)时触发编辑
  • QListWidgetItem中常用的标志包括:
  • Qt::ItemIsSelectable:项可以被选择。
  • Qt::ItemIsEditable:项可以被编辑。
  • Qt::ItemIsDragEnabled:可以从列表中拖动项。
  • Qt::ItemIsDropEnabled:可以将拖动的项放入列表。
  • Qt::ItemIsUserCheckable:项可以有一个复选框或类似的控件供用户勾选。

  • 参数
    • row:列表中项的行号索引。
  • 返回值:返回指定行的 QListWidgetItem。如果索引无效,则返回 nullptr
QListWidgetItem *QListWidget::item(int row) const

排序功能

QTableWidget

属性

源码

插入

setHorizontalHeaderItem

  • column: 这是一个 int 类型的参数,指定要设置的列的索引。索引是从0开始的,所以第一列的索引是0,第二列是1,依此类推。

  • item: 这是一个指向 QTableWidgetItem 的指针。这个参数是你要设置的新表头项。你可以通过这个 QTableWidgetItem 对象来定义列标题的文本、图标等属性。

horizontalHeaderItemQTableWidget 类中的一个方法,它用于获取表格中某一列的水平表头项(即列标题)。这个方法返回一个指向 QTableWidgetItem 的指针,代表了指定列的表头

QTableWidgetItem *horizontalHeaderItem(int column) const;

column: 这是一个 int 类型的参数,表示你想获取表头的列的索引。索引从0开始,即第一列的索引是0

void setVerticalHeaderLabels(const QStringList &labels);

const QStringList &labels: 这是一个字符串列表,每个字符串对应表格的一行,用于设置每一行的标题。

setItem函数

void setItem(int row, int column, QTableWidgetItem *item);
  • int row: 目标单元格的行号。
  • int column: 目标单元格的列号。
  • QTableWidgetItem *item: 要放置在指定单元格中的QTableWidgetItem对象。这个对象包含了单元格将要显示的数据。

插入列标题

使用 setHorizontalHeaderLabelssetHorizontalHeaderItem 来设置列标题:

  1. setHorizontalHeaderLabels:一次性设置所有列的标题。

setHorizontalHeaderItem:为特定列设置标题。

插入行标题

使用 setVerticalHeaderLabelssetVerticalHeaderItem 来设置行标题:

  1. setVerticalHeaderLabels:一次性设置所有行的标题。

  • setVerticalHeaderItem:为特定行设置标题。

插入图片

获取选中数据

QList<QTableWidgetItem *> selectedItems() const;

selectedItems()QTableWidget 类中的一个方法,用于获取用户在表格中所选取的所有项(QTableWidgetItem 对象)。

  • 返回值是一个QTableWidgetItem指针的列表(QList<QTableWidgetItem *>)。列表中的每个元素都是指向被选中的表格项的指针。
  1. QAbstractItemView::NoSelection:不允许选择。
  2. QAbstractItemView::SingleSelection:只能选择一个项目。
  3. QAbstractItemView::MultiSelection:可以通过点击选择多个项目,不需要按住键盘上的任何修饰键。
  4. QAbstractItemView::ExtendedSelection:在这种模式下,用户可以使用Shift或Control键来选择多个项目。
  5. QAbstractItemView::ContiguousSelection:用户可以选择连续的项目范围。

QModelIndex

常用方法:

  • row(): 返回索引所在的行。
  • column(): 返回索引所在的列。
  • parent(): 返回父索引(对于树状模型特别有用)。
  • child(int row, int column): 返回位于给定行列的子索引。
  • data(int role = Qt::DisplayRole): 返回索引处的数据。role参数定义了数据的类型,如显示文本、图标等。
  • isValid(): 检查索引是否有效。

信号

  1. cellEntered:

    • 这个信号属于 QTableViewQTableWidget 类。
    • 当用户的鼠标指针进入表格的一个单元格时,会发出 cellEntered 信号。
    • 这个信号通常用于表格视图,用于跟踪鼠标在表格中的移动。
    • 信号原型通常为 void cellEntered(int row, int column),提供了进入的单元格的行和列索引。
  2. itemEntered:

    • 这个信号属于 QListWidgetQTreeView 类。
    • 当用户的鼠标指针进入这些控件的一个项(item)时,会发出 itemEntered 信号。
    • 这个信号通常用于列表或树形控件,用于跟踪鼠标在项之间的移动。
    • 对于 QListWidget,信号原型通常为 void itemEntered(QListWidgetItem *item),提供了鼠标进入的项。
    • 对于 QTreeView,信号原型通常为 void itemEntered(QTreeWidgetItem *item),同样提供了鼠标进入的项。

sectionClicked 是一个信号,通常与 QHeaderView 类相关联。QHeaderView 类用于表示表格(如 QTableView)或列表(如 QListViewQTreeView)中的表头。sectionClicked 信号在用户点击表头的某个部分(section)时发出。

这个信号的典型用途包括:

  1. 排序:当用户点击表头的某一列时,可以对表格的数据按照该列进行排序。这是 sectionClicked 信号最常见的用途。

  2. 自定义操作:开发者可以利用这个信号来执行其他自定义操作,比如显示一个上下文菜单,或改变列的显示方式等。

样式

QTreeWidget

属性

信号

样式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/635995.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[论文阅读链接]

CVPR2023&#xff1a;Learning Human-to-Robot Handovers from Point Clouds http://t.csdnimg.cn/OfSnShttp://t.csdnimg.cn/OfSnS仿真工具&#xff1a;dm_control: Software and Tasks for Continuous Control dm_control 翻译: Software and Tasks for Continuous Control…

政安晨:【Keras机器学习示例演绎】(六)—— 通过 CT 扫描进行 3D 图像分类

目录 简介 设置 下载 MosMedData&#xff1a;胸部CT扫描与COVID-19相关发现 加载数据和预处理 建立训练和验证数据集 数据增强 定义 3D 卷积神经网络 训练模型 模型性能可视化 通过一次 CT 扫描进行预测 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍…

Python --- 在python中安装NumPy,SciPy,Matplotlib以及scikit-learn(Windows平台)

在python中安装NumPy&#xff0c;SciPy&#xff0c;Matplotlib以及scikit-learn(Windows平台) 本文是针对(像我一样的)python新用户所写的&#xff0c;刚刚在电脑上装好python之后&#xff0c;所需的一些常见/常用的python第三方库/软件包的快速安装指引。包括了这些常用安装包…

Web后端-请求响应

黑马程序员JavaWeb开发教程 文章目录 一、请求1、简单参数2、实体参数3、数组集合参数&#xff08;1&#xff09;数组参数&#xff08;2&#xff09;集合参数 4、日期参数5、json参数&#xff08;1&#xff09;在Postman中怎么发起请求来传递JSON格式的请求参数&#xff08;2&a…

linux下摄像头设置固定的设备名

目录 2.热插拔udev机制 3.设置udev的规则 1.查看usb ID 2. 查看usb设备的信息 3.编译规则 4.拓展 1.问题的出现 通过我之前的文章配置完摄像头的开机自启动之后我们会发现有的时候会出现启动不了的情况&#xff0c;通过实验我发现是摄像头的设备名发生了改变&#xff0c;…

Git ignore、exclude for TortoiseGit 小结

1.Ignore Type&#xff1a;忽略类型&#xff0c;也即忽略规则&#xff0c;如何去忽略文件? 1.1.Ignore item(s) only in containing folder(s)&#xff1a;仅忽略在包含在文件夹中项目。 仅忽略该文件夹下选定的patterns。the patterns其实就是文件类型&#xff0c;比如.txt后…

(四)SQL面试题(连续登录、近N日留存)学习简要笔记 #CDA学习打卡

目录 一. 连续登录N天的用户数量 1&#xff09;举例题目 2&#xff09;分析思路 3&#xff09;解题步骤 &#xff08;a&#xff09;Step1&#xff1a;选择12月的记录&#xff0c;并根据用户ID和登录日期先去重 &#xff08;b&#xff09;Step2&#xff1a;创建辅助列a_rk…

03 华三交换机的基础配置

用户登录设备后,直接进入用户视图。用户视图下可执行的操作主要包括查看操作、调试操作、文件管理操作、设置系统时间、重启设备、FTP和Telnet操作等。 从用户视图可以进入系统视图。系统视图下能对设备运行参数以及部分功能进行配置,例如配置夏令时、配置欢迎…

Sileo安装插件报错:Depends mobilesubstrate

Sileo安装插件报错 iOS 15.8系统&#xff0c;使用palera1n越狱&#xff0c;然后使用Sileo安装插件的时候&#xff0c;有些插件会报错&#xff1a;Depends mobilesubstrate&#xff08;比如AppStore plus&#xff09; 报错的原因分析 从提示信息很容易可以看出&#xff0c;当…

面试(05)————Redis篇

目录 一、项目中哪些地方使用了redis 问题一&#xff1a;发生了缓存穿透该怎么解决&#xff1f; 方案一&#xff1a;缓存空数据 方案二&#xff1a;布隆过滤器 模拟面试 问题二&#xff1a; 发生了缓存击穿该怎么解决&#xff1f; 方案一&#xff1a;互斥锁 方案二&#xff…

JavaWeb-登录校验

会话技术 浏览器使用的是http协议&#xff0c;多次请求间数据是不能共享的&#xff0c;例如我们要去访问用户数据的接口&#xff0c;但这时候用户是否已经登入了呢&#xff1f;是不知道的&#xff0c;为了解决这个问题&#xff0c;于是引入了会话跟踪技术。 会话&#xff1a;…

windows驱动开发-WDM框架(二)

DriverEntry 每个驱动程序必须具有 DriverEntry 例程&#xff0c;用于初始化驱动程序范围的数据结构和资源。 在支持即插即用 (PnP) 的驱动程序中&#xff0c;与所有驱动程序一样&#xff0c;DriverEntry 例程负责驱动程序初始化&#xff0c;而 AddDevice 例程负责设备初始化…