列表控件列表表格树

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

属性

信号

样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值