QListWidget
QListWidget
是 Qt 框架中的一个部件,用于在图形用户界面中显示一个列表。这个列表可以包含文本项、图标或者其他自定义的部件。它非常适合用于呈现一系列可选择的元素。
基本属性和设置
-
NoSelection:不允许选择。用户无法选择任何项。
-
SingleSelection:单选。一次只能选择一个项。
-
MultiSelection:多选。用户可以通过点击来选择多个项,而不需要按住键盘上的任何键。
-
ExtendedSelection:扩展选择。用户可以通过单击选择单个项,通过Ctrl键单击来切换项的选择状态,或者通过Shift键单击来选择一系列项。
-
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
对象来定义列标题的文本、图标等属性。
horizontalHeaderItem
是 QTableWidget
类中的一个方法,它用于获取表格中某一列的水平表头项(即列标题)。这个方法返回一个指向 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
对象。这个对象包含了单元格将要显示的数据。
插入列标题
使用 setHorizontalHeaderLabels
或 setHorizontalHeaderItem
来设置列标题:
-
setHorizontalHeaderLabels:一次性设置所有列的标题。
setHorizontalHeaderItem:为特定列设置标题。
插入行标题
使用 setVerticalHeaderLabels
或 setVerticalHeaderItem
来设置行标题:
-
setVerticalHeaderLabels:一次性设置所有行的标题。
-
setVerticalHeaderItem:为特定行设置标题。
插入图片
获取选中数据
QList<QTableWidgetItem *> selectedItems() const;
selectedItems()
是 QTableWidget
类中的一个方法,用于获取用户在表格中所选取的所有项(QTableWidgetItem
对象)。
- 返回值是一个
QTableWidgetItem
指针的列表(QList<QTableWidgetItem *>
)。列表中的每个元素都是指向被选中的表格项的指针。
QAbstractItemView::NoSelection
:不允许选择。QAbstractItemView::SingleSelection
:只能选择一个项目。QAbstractItemView::MultiSelection
:可以通过点击选择多个项目,不需要按住键盘上的任何修饰键。QAbstractItemView::ExtendedSelection
:在这种模式下,用户可以使用Shift或Control键来选择多个项目。QAbstractItemView::ContiguousSelection
:用户可以选择连续的项目范围。
QModelIndex
常用方法:
row()
: 返回索引所在的行。column()
: 返回索引所在的列。parent()
: 返回父索引(对于树状模型特别有用)。child(int row, int column)
: 返回位于给定行列的子索引。data(int role = Qt::DisplayRole)
: 返回索引处的数据。role
参数定义了数据的类型,如显示文本、图标等。isValid()
: 检查索引是否有效。
信号
-
cellEntered
:- 这个信号属于
QTableView
或QTableWidget
类。 - 当用户的鼠标指针进入表格的一个单元格时,会发出
cellEntered
信号。 - 这个信号通常用于表格视图,用于跟踪鼠标在表格中的移动。
- 信号原型通常为
void cellEntered(int row, int column)
,提供了进入的单元格的行和列索引。
- 这个信号属于
-
itemEntered
:- 这个信号属于
QListWidget
或QTreeView
类。 - 当用户的鼠标指针进入这些控件的一个项(item)时,会发出
itemEntered
信号。 - 这个信号通常用于列表或树形控件,用于跟踪鼠标在项之间的移动。
- 对于
QListWidget
,信号原型通常为void itemEntered(QListWidgetItem *item)
,提供了鼠标进入的项。 - 对于
QTreeView
,信号原型通常为void itemEntered(QTreeWidgetItem *item)
,同样提供了鼠标进入的项。
- 这个信号属于
sectionClicked
是一个信号,通常与 QHeaderView
类相关联。QHeaderView
类用于表示表格(如 QTableView
)或列表(如 QListView
、QTreeView
)中的表头。sectionClicked
信号在用户点击表头的某个部分(section)时发出。
这个信号的典型用途包括:
-
排序:当用户点击表头的某一列时,可以对表格的数据按照该列进行排序。这是
sectionClicked
信号最常见的用途。 -
自定义操作:开发者可以利用这个信号来执行其他自定义操作,比如显示一个上下文菜单,或改变列的显示方式等。