QAbstractItemView
- 1 说明
- 2 常用函数
- 2.1 交替行颜色
- 2.1.1 alternatingRowColors
- 2.1.2 setAlternatingRowColors
- 2.2 autoScroll
- 2.2.1 hasAutoScroll
- 2.2.2 setAutoScroll
- 2.3 autoScrollMargin
- 2.3.1 autoScrollMargin
- 2.3.2 setAutoScrollMargin
- 2.4 defaultDropAction
- 2.4.1 setDefaultDropAction
- 2.4.2 defaultDropAction()
- 2.5 dragDropMode
- 2.5.1 dragDropMode
- 2.5.2 setDragDropMode
- 2.6 拖放行为
- 2.6.1 setDragDropOverwriteMode
- 2.6.2 dragDropOverwriteMode
- 2.7 是否支持拖动
- 2.7.1 dragEnabled
- 2.7.2 setDragEnabled
- 2.8 编辑
- 2.8.1 editTriggers()
- 2.8.2 setEditTriggers
- 2.9 水平(垂直)滚动模式
- 2.10 项目图标大小
- 2.11 选择行为
- 2.12 选择模式
- 2.13 拖放指示器
- 2.14 Tab导航键
- 2.15 文本省略模式
- 2.16 选择项目
- 3 信号
- 4 槽函数
- 4.1 公有槽函数
- 4.1.1 clearSelection()
- 4.1.2 edit
- 4.1.3 reset()
- 4.1.4 scrollToBottom
- 4.1.5 scrollToTop
- 4.1.6 selectAll()
- 4.16.7 :setCurrentIndex
1 说明
QAbstractItemView 是 Qt 中用于显示模型数据的基础视图类。它是一个抽象类,无法直接使用,但可以通过继承它来创建自定义视图类。它为您提供了一组基本的用于显示和编辑模型数据的功能,并允许您对视图的外观和行为进行定制。需要使用它的具体子类之一,如 QListView、QTableView 或 QTreeView 等。
2 常用函数
2.1 交替行颜色
2.1.1 alternatingRowColors
bool alternatingRowColors() const
如何表格被设置成交替行颜色就返回true,否则返回false
2.1.2 setAlternatingRowColors
void setAlternatingRowColors(bool enable)
设置表格是否交替行颜色
2.2 autoScroll
2.2.1 hasAutoScroll
bool hasAutoScroll() const
此属性保存是否启用拖动移动事件中的自动滚动
2.2.2 setAutoScroll
void setAutoScroll(bool enable)
如果这个属性被设置为true(默认值),如果用户在视口边缘的16个像素范围内拖动,QAbstractItemView会自动滚动视图的内容。如果当前项发生变化,则视图将自动滚动以确保当前项完全可见。
此属性仅在视口接受drops时有效。自动滚动通过将此属性设置为false来关闭。
2.3 autoScrollMargin
2.3.1 autoScrollMargin
int autoScrollMargin() const
返回自动滚动区域的大小
2.3.2 setAutoScrollMargin
void setAutoScrollMargin(int margin)
设置自动滚动区域的大小
2.4 defaultDropAction
2.4.1 setDefaultDropAction
void setDefaultDropAction(Qt::DropAction dropAction)
用于设置默认的拖放操作。拖放操作是指在项目视图中拖动项目并放置到另一个位置的操作。例如,在表格中,拖放操作可以用于移动行或列,或者从一个表格拖放到另一个表格中。
2.4.2 defaultDropAction()
Qt::DropAction defaultDropAction() const
返回默认的拖拽的效果
enum Qt::DropAction
flags Qt::DropActions
2.5 dragDropMode
此属性保存视图将执行的拖放事件
2.5.1 dragDropMode
QAbstractItemView::DragDropMode dragDropMode() const
返回拖放的样式
2.5.2 setDragDropMode
void setDragDropMode(QAbstractItemView::DragDropMode behavior)
设置拖放的样式
2.6 拖放行为
此属性保存视图的拖放行为
2.6.1 setDragDropOverwriteMode
void setDragDropOverwriteMode(bool overwrite)
函数接收一个 bool 类型的参数,表示是否覆盖原始数据。如果参数值为 true,则表示在拖放时会覆盖原始数据;如果参数值为 false,则表示在拖放时会在原始数据后插入新数据。
默认值是false,就像QListView和QTreeView子类一样。另一方面,在QTableView子类中,属性被设置为true。
注意:这不是为了防止项目被覆盖。flags()的模型实现应该通过不返回来做到这一点
2.6.2 dragDropOverwriteMode
bool dragDropOverwriteMode() const
返回是否覆盖原始数据
2.7 是否支持拖动
2.7.1 dragEnabled
bool dragEnabled() const
返回是否支持拖动
2.7.2 setDragEnabled
void setDragEnabled(bool enable)
设置是否支持拖动,效果相当于setDragDropMode(QAbstractItemView::DragOnly)
2.8 编辑
2.8.1 editTriggers()
QAbstractItemView::EditTriggers editTriggers() const
返回编辑触发器的类型
2.8.2 setEditTriggers
void setEditTriggers(QAbstractItemView::EditTriggers triggers)
设置编辑触发器的模式,可以使用或选择多个
2.9 水平(垂直)滚动模式
QAbstractItemView::ScrollMode horizontalScrollMode() const
返回水平滚动的模式
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
设置水平滚动的模式
void resetHorizontalScrollMode()
重置水平滚动的模式
QAbstractItemView::ScrollMode verticalScrollMode() const
返回垂直滚动的模式
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
设置垂直滚动的模式
void resetVerticalScrollMode()
重置垂直滚动的模式
2.10 项目图标大小
QSize iconSize() const
返回项目图标的大小
void setIconSize(const QSize &size)
设置图标的大小,QSize 类是一个封装宽度和高度的类,它可以通过构造函数或静态函数创建。
void iconSizeChanged(const QSize &size) signal
信号,当图标大小发生变化时触发
QTableView
QStandardItemModel *model = new QStandardItemModel(2, 2);
// 设置模型的第一行第一列的项目的图标
QModelIndex index = model->index(0, 0);
QIcon icon(":/icons/file.png");
model->setData(index, icon, Qt::DecorationRole);
table->setIconSize(QSize(32, 32));
2.11 选择行为
QAbstractItemView::SelectionBehavior selectionBehavior() const
返回选择的行为
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
设置选择的行为
2.12 选择模式
QAbstractItemView::SelectionMode selectionMode() const
返回选择模式
void setSelectionMode(QAbstractItemView::SelectionMode mode)
设置选择模式
- NoSelection:不可选择任何项目。
- SingleSelection:只能选择一个项目。
- MultiSelection:可以选择多个项目。 用按住鼠标,只通过单击也可以实现选择多个项目
- ExtendedSelection:可以通过按住Shift或Ctrl键来选择多个项目。
- ContiguousSelection:可以选择一个连续的项目范围。
2.13 拖放指示器
bool showDropIndicator() const
返回是否显示拖放指示器
void setDropIndicatorShown(bool enable)
设置是否显示拖放指示器
拖放指示器:就是你拖放到哪一个单元格,那个单元格边框加粗,方便辨别
2.14 Tab导航键
bool tabKeyNavigation() const
返回是否启用Tab导航键
void setTabKeyNavigation(bool enable)
设置是否启用Tab导航键
在项目视图中启用Tab键导航后,用户可以使用Tab键来在项目之间导航,并使用Shift + Tab键来进行反向导航。
2.15 文本省略模式
Qt::TextElideMode textElideMode() const
返回文本省略模式
void setTextElideMode(Qt::TextElideMode mode)
设置文本省略模式
请注意,当文本在项目视图中的可用空间不足时,才会显示省略号。
2.16 选择项目
void QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) [pure virtual protected]
受保护的虚函数
用于设置列表视图中的选择。该函数有两个参数:
- rect表示要选择的项目所在的矩形区域。
- flags表示选择的模式,可以是下列值的组合:
- QItemSelectionModel::Clear:清除当前选择的所有项目。
- QItemSelectionModel::Select:选择指定区域内的所有项目。
- QItemSelectionModel::Deselect:取消选择指定区域内的所有项目。
- QItemSelectionModel::Toggle:切换指定区域内项目的选择状态。
QRect rect(1, 2, 1, 3);
ui->listView->setSelection(rect, QItemSelectionModel::Clear | QItemSelectionModel::Select);
void QAbstractItemView::selectAll() virtual slot
虚拟槽函数
它的作用是选择列表视图中的所有项目
3 信号
void QAbstractItemView::activated(const QModelIndex &index)
当用户双击或者按下回车键选择一个项目时,该信号会被触发。该信号携带了一个QModelIndex类型的参数,表示被选择的项目的索引。如何激活道具取决于平台;例如,通过单点或双击项目,或当项目是当前时按返回或进入键。在win10测试时候只有按下回车键才会触发
connect(ui->tableView, &QAbstractItemView::activated, this, [this] (const QModelIndex &index) {
QMessageBox::information(this, "Information", "Item activated: " + index.data().toString());
});
void QAbstractItemView::clicked(const QModelIndex &index)
它的作用是在用户单击列表视图中的项目时发出信号。clicked信号是所有QAbstractItemView的子类都支持的。单击任何项目都会触发
void QAbstractItemView::doubleClicked(const QModelIndex &index)
双击鼠标按钮时发出此信号。鼠标双击的项目由index指定。只有当索引有效时才发出信号。
void QAbstractItemView::entered(const QModelIndex &index)
当鼠标光标进入index指定的项时发出此信号。要使该特性工作,需要启用鼠标跟踪(ui->tableView->setMouseTracking(true);
)。
void iconSizeChanged(const QSize &size)
当图标大小发生变化是触发该信号
void QAbstractItemView::pressed(const QModelIndex &index)
鼠标按下触发
void QAbstractItemView::viewportEntered()
当鼠标光标进入视口时发出这个信号。要使该特性工作,需要启用鼠标跟踪。
红色区域是index指定的项,蓝色区域是视图
4 槽函数
4.1 公有槽函数
4.1.1 clearSelection()
void QAbstractItemView::clearSelection() slot[]
槽函数,用于清除当前选择的所有项目。这个函数不需要任何参数,它直接清除当前选择的项目。clearSelection函数只会清除用户选择的项目,而不会清除列表视图中的所有项目。
4.1.2 edit
void QAbstractItemView::edit(const QModelIndex &index)
开始编辑与给定索引对应的项(如果该项是可编辑的)。
4.1.3 reset()
void QAbstractItemView::reset()
虚拟函数
重置视图的内部状态。
警告:此函数将重置打开的编辑器,滚动条位置,选择等。现有的更改将不会被提交。如果您希望在重置视图时保存更改,您可以重新实现此函数,提交更改,然后调用超类的实现。
4.1.4 scrollToBottom
void QAbstractItemView::scrollToBottom()
将视图滚动到底部。
4.1.5 scrollToTop
void QAbstractItemView::scrollToTop()
将视图滚动到顶部。
4.1.6 selectAll()
void QAbstractItemView::selectAll() virtual slot
虚拟槽函数
它的作用是选择列表视图中的所有项目
4.16.7 :setCurrentIndex
void QAbstractItemView::setCurrentIndex(const QModelIndex &index)
将当前项设置为索引处的项。
除非当前选择模式为“不选择”,否则该项也会被选中。注意,这个函数还会更新用户执行的任何新选择的起始位置。