QAbstractItemView 类

QAbstractItemView 类提供了 item 视图基本功能。 更多信息...

头文件 #include <QAbstractItemView>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QAbstractScrollArea
由以下类继承

QColumnViewQHeaderViewQListViewQTableView,以及 QTreeView

公共类型

枚举DragDropMode { NoDragDrop, DragOnly, DropOnly, DragDrop, InternalMove }
枚举EditTrigger { NoEditTriggers, CurrentChanged, DoubleClicked, SelectedClicked, EditKeyPressed, …, AllEditTriggers }
标志EditTriggers
枚举ScrollHint { EnsureVisible, PositionAtTop, PositionAtBottom, PositionAtCenter }
枚举ScrollMode { ScrollPerItem, ScrollPerPixel }
枚举SelectionBehavior { SelectItems, SelectRows, SelectColumns }
枚举SelectionMode { SingleSelection, ContiguousSelection, ExtendedSelection, MultiSelection, NoSelection }

属性

公共函数

QAbstractItemView(QWidget *parent = nullptr)
virtual~QAbstractItemView()
boolalternatingRowColors() const
intautoScrollMargin() const
voidclosePersistentEditor(const QModelIndex &index)
QModelIndexcurrentIndex() const
Qt::DropActiondefaultDropAction() const
QAbstractItemView::DragDropModedragDropMode() const
booldragDropOverwriteMode() const
booldragEnabled() const
QAbstractItemView::EditTriggerseditTriggers() const
boolhasAutoScroll() const
QAbstractItemView::ScrollModehorizontalScrollMode() const
QSizeiconSize() const
virtual QModelIndexindexAt(const QPoint &point) const = 0
QWidget *indexWidget(const QModelIndex &index) const
boolisPersistentEditorOpen(const QModelIndex &index) const
QAbstractItemDelegate *itemDelegate() const
QAbstractItemDelegate *itemDelegateForColumn(int column) const
(since 6.0) virtual QAbstractItemDelegate *itemDelegateForIndex(const QModelIndex &index) const
QAbstractItemDelegate *itemDelegateForRow(int row) const
virtual voidkeyboardSearch(const QString &search)
QAbstractItemModel *model() const
voidopenPersistentEditor(const QModelIndex &index)
voidresetHorizontalScrollMode()
voidresetVerticalScrollMode()
QModelIndexrootIndex() const
virtual voidscrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) = 0
QAbstractItemView::SelectionBehaviorselectionBehavior() const
QAbstractItemView::SelectionModeselectionMode() const
QItemSelectionModel *selectionModel() const
voidsetAlternatingRowColors(bool enable)
voidsetAutoScroll(bool enable)
voidsetAutoScrollMargin(int margin)
voidsetDefaultDropAction(Qt::DropAction dropAction)
voidsetDragDropMode(QAbstractItemView::DragDropMode behavior)
voidsetDragDropOverwriteMode(bool overwrite)
voidsetDragEnabled(bool enable)
voidsetDropIndicatorShown(bool enable)
voidsetEditTriggers(QAbstractItemView::EditTriggers triggers)
voidsetHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
voidsetIconSize(const QSize &size)
voidsetIndexWidget(const QModelIndex &index, QWidget *widget)
voidsetItemDelegate(QAbstractItemDelegate *delegate)
voidsetItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)
voidsetItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
virtual voidsetModel(QAbstractItemModel *model)
voidsetSelectionBehavior(QAbstractItemView::SelectionBehavior 行为)
voidsetSelectionMode(QAbstractItemView::SelectionMode 模式)
virtual voidsetSelectionModel(QItemSelectionModel *selectionModel)
voidsetTabKeyNavigation(bool 启用)
voidsetTextElideMode(Qt::TextElideMode 模式)
voidsetVerticalScrollMode(QAbstractItemView::ScrollMode 模式)
boolshowDropIndicator() const
虚 intsizeHintForColumn(int ) const
QSizesizeHintForIndex(const QModelIndex &索引) const
虚 intsizeHintForRow(int ) const
booltabKeyNavigation() const
Qt::TextElideModetextElideMode() const
QAbstractItemView::ScrollModeverticalScrollMode() const
虚 QRectvisualRect(const QModelIndex &索引) const = 0

重 implementing Public Functions

虚 QVariantinputMethodQuery(Qt::InputMethodQuery 查询) const override

Public Slots

voidclearSelection()
voidedit(const QModelIndex &索引)
virtual voidreset()
voidscrollToBottom()
voidscrollToTop()
virtual voidselectAll()
voidsetCurrentIndex(const QModelIndex &索引)
virtual voidsetRootIndex(const QModelIndex &索引)
voidupdate(const QModelIndex &索引)

Signals

voidactivated(const QModelIndex &索引)
voidclicked(const QModelIndex &索引)
voiddoubleClicked(const QModelIndex &索引)
voidentered(const QModelIndex &索引)
voidiconSizeChanged(const QSize &size)
voidpressed(const QModelIndex &索引)
voidviewportEntered()

Protected Types

枚举CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, MoveHome, …, MovePrevious }
枚举DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport }
枚举State { NoState, DraggingState, DragSelectingState, EditingState, ExpandingState, …, AnimatingState }

Protected Functions

QPointdirtyRegionOffset() const
QAbstractItemView::DropIndicatorPositiondropIndicatorPosition() const
虚 booledit(const QModelIndex &索引, QAbstractItemView::EditTrigger trigger, QEvent *event)
voidexecuteDelayedItemsLayout()
虚 inthorizontalOffset() const = 0
(since 6.0) 虚 voidinitViewItemOption(QStyleOptionViewItem *option) const
虚 boolisIndexHidden(const QModelIndex &索引) const = 0
virtual QModelIndexmoveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0
void延迟调度项布局()
voidscrollDirtyRegion(int dx, int dy)
virtual QModelIndexListselectedIndexes() const
virtual QItemSelectionModel::SelectionFlagsselectionCommand(const QModelIndex &index, const QEvent *event = nullptr) const
voidsetDirtyRegion(const QRegion &region)
virtual voidsetSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) = 0
voidsetState(QAbstractItemView::State state)
virtual voidstartDrag(Qt::DropActions supportedActions)
QAbstractItemView::Statestate() const
虚 intverticalOffset() const = 0
virtual QRegionvisualRegionForSelection(const QItemSelection &selection) const = 0

重写的受保护函数

virtual voiddragEnterEvent(QDragEnterEvent *event) override
virtual voiddragLeaveEvent(QDragLeaveEvent *event) override
virtual voiddragMoveEvent(QDragMoveEvent *event) override
virtual voiddropEvent(QDropEvent *event) override
虚 boolevent(QEvent *event) override
虚 booleventFilter(QObject *object, QEvent *event) override
virtual voidfocusInEvent(QFocusEvent *event) override
虚 boolfocusNextPrevChild(bool next) override
virtual voidfocusOutEvent(QFocusEvent *event) override
virtual voidinputMethodEvent(QInputMethodEvent *event) override
virtual voidkeyPressEvent(QKeyEvent *event) override
virtual voidmouseDoubleClickEvent(QMouseEvent *event) override
virtual voidmouseMoveEvent(QMouseEvent *event) override
virtual voidmousePressEvent(QMouseEvent *event) override
virtual voidmouseReleaseEvent(QMouseEvent *event) override
virtual voidresizeEvent(QResizeEvent *event) override
virtual voidtimerEvent(QTimerEvent *event) override
虚 boolviewportEvent(QEvent *event) override
virtual QSizeviewportSizeHint() const override

受保护的槽函数

virtual voidcloseEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint)
virtual voidcommitData(QWidget *editor)
virtual voidcurrentChanged(const QModelIndex &current, const QModelIndex &previous)
virtual voiddataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())
virtual voideditorDestroyed(QObject *editor)
virtual voidrowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
virtual voidrowsInserted(const QModelIndex &parent, int start, int end)
virtual voidselectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
virtual voidupdateGeometries()

详细说明

QAbstractItemView类是每个使用QAbstractItemModel的标准视图的基础类。QAbstractItemView是一个抽象类,不能直接实例化。它提供了一个标准接口,通过信号和槽机制与模型交互,使子类能够及时了解模型的变化。此类提供了对键盘和鼠标导航、视口滚动、项目编辑和选择的标准化支持。键盘导航实现了这项功能。

功能
箭头键更改当前项并选择它。
Ctrl+箭头键更改当前项但不选择它。
Shift+箭头键更改当前项并选择它。之前选中的项不会被取消选中。
Ctrl+空格切换当前项的选中状态。
Tab/Backtab将当前项更改为下一个/上一个项。
Home/End选择模型中的第一个/最后一个项。
Page up/Page down根据视图中可见的行数,向上/向下滚动行。
Ctrl+A选择模型中的所有项。

注意,上述表格假定选择模式允许这些操作。例如,如果选择模式是QAbstractItemView::NoSelection,则无法选择项。

QAbstractItemView类是模型/视图类之一,是Qt的模型/视图框架的一部分。

继承自QAbstractItemView的视图类只需要实现它们自己的视图特定功能,例如绘制项、返回项的几何形状、查找项等。

QAbstractItemView提供了一些常用的槽,例如edit() 和 setCurrentIndex()。还提供了一些受保护的槽,包括dataChanged ()、rowsInserted ()、rowsAboutToBeRemoved ()、selectionChanged () 和 currentChanged ()。

rootIndex()返回根项,由currentIndex()返回当前项。要确保项目可见,请使用scrollTo()。

QAbstractItemView的一些函数与滚动有关,例如 setHorizontalScrollMode() 和 setVerticalScrollMode()。例如,您可以通过重新实现视图的resizeEvent() 函数来设置滚动条的范围。

void MyView::resizeEvent(QResizeEvent *event) {
    horizontalScrollBar()->setRange(0, realWidth - width());
    ...
}

请注意,直到小部件显示后才会更新范围。

有几个其他功能与选择控制有关;例如setSelectionMode () 和 setSelectionBehavior ()。此类提供了一个默认的选择模型以配合使用(《a href="qabstractitemview.html#selectionModel" translate="no">selectionModel()),但可以通过使用不完全相同 setSelectionModel () 与 QItemSelectionModel 的实例替换。

要完全控制项的显示和编辑,可以指定一个通过 setItemDelegate () 的代理。

QAbstractItemView提供许多受保护的函数。其中一些与编辑有关,例如 edit () 和 commitData (),而其他的是键盘和鼠标事件处理程序。

注意:如果您继承自 QAbstractItemView 并且打算更新视口的內容,应使用 viewport->update() 而不是 update(),因为所有的绘图操作都发生在视图中。

另请参阅:视图类模型/视图编程以及 QAbstractItemModel

成员类型文档

枚举 QAbstractItemView::CursorAction

此枚举描述了在项之间导航的不同方式

常量描述
QAbstractItemView::MoveUp0移动到当前项上方的项。
QAbstractItemView::MoveDown1移动到当前项下方的项。
QAbstractItemView::MoveLeft2移动到当前项左侧的项。
QAbstractItemView::MoveRight3移动到当前项右侧的项。
QAbstractItemView::MoveHome4移动到左上角项。
QAbstractItemView::MoveEnd5移动到底右角项。
QAbstractItemView::MovePageUp6向上移动一页至当前项上方。
QAbstractItemView::MovePageDown7向下移动一页至当前项下方。
QAbstractItemView::MoveNext8移动到当前项之后的项。
QAbstractItemView::MovePrevious9移动到当前项之前的项。

另请参阅:moveCursor().

枚举 QAbstractItemView::DragDropMode

描述视图可以执行的拖放事件的各种情况。默认情况下,视图不支持拖放(NoDragDrop)。

常量描述
QAbstractItemView::NoDragDrop0不支持拖放。
QAbstractItemView::DragOnly1视图支持其自己的项的拖动。
QAbstractItemView::DropOnly2视图接受放下操作。
QAbstractItemView::DragDrop3视图同时支持拖动和放下。
QAbstractItemView::InternalMove4视图仅接受自身发起的移动(非复制)操作。

注意,所使用的模型需要提供对拖放操作的支持。

另请参阅:setDragDropMode() 和 在项目视图中使用拖放

枚举 QAbstractItemView::DropIndicatorPosition

此枚举表示放下指示器相对于当前鼠标位置索引的位置

常量描述
QAbstractItemView::OnItem0项将落在索引上。
QAbstractItemView::AboveItem1项将放在索引上方。
QAbstractItemView::BelowItem2项将放在索引下方。
QAbstractItemView::OnViewport3项将被放在没有项的视口区域上。视图如何处理在视口中放下的项取决于所使用的底层模型的行为。

枚举 QAbstractItemView::EditTrigger
标志 QAbstractItemView::EditTriggers

此枚举描述了将触发表项编辑的动作。

常量描述
QAbstractItemView::NoEditTriggers0不可编辑。
QAbstractItemView::CurrentChanged1当当前项改变时开始编辑。
QAbstractItemView::DoubleClicked2双击项时开始编辑。
QAbstractItemView::SelectedClicked4点击已选中的项时开始编辑。
QAbstractItemView::EditKeyPressed8在项上按下平台编辑键时开始编辑。
QAbstractItemView::AnyKeyPressed16编辑操作在按下任何键时开始。
QAbstractItemView::AllEditTriggers31上述所有操作将启动编辑。

编辑触发器类型是针对 QFlags<EditTrigger> 的宏定义。它存储了编辑触发器值的逻辑或组合。

enum QAbstractItemView::滚动提示

常量描述
QAbstractItemView::EnsureVisible0滚动以确保项目可见。
QAbstractItemView::PositionAtTop1滚动以将项目置于视窗顶部。
QAbstractItemView::PositionAtBottom2滚动以将项目置于视窗底部。
QAbstractItemView::PositionAtCenter3滚动以将项目置于视窗中心。

enum QAbstractItemView::滚动模式

描述滚动条应如何行为。当将滚动模式设置为 ScrollPerPixel 时,单步长将自动调整,除非使用 setSingleStep 明确设置。可以通过将单步长设置为-1来恢复自动调整。

常量描述
QAbstractItemView::滚动每个项目0视图将逐个项目滚动内容。
QAbstractItemView::滚动每个像素1视图将逐个像素滚动内容。

enum QAbstractItemView::选择行为

常量描述
QAbstractItemView::SelectItems0选择单个项。
QAbstractItemView::SelectRows1仅选择行。
QAbstractItemView::SelectColumns2仅选择列。

enum QAbstractItemView::选择模式

此枚举表示视图对用户选择如何响应。

常量描述
QAbstractItemView::SingleSelection1当用户选择一个项时,任何已选择的项将被取消选择。在单击已选择的项时按 Ctrl 键可以从所选项中取消选择。
QAbstractItemView::ContiguousSelection4当用户按常规方式选择一个项时,选择将被清除并选择新项。但是,如果用户在单击项时按 Shift 键,则从当前项到单击项之间的所有项将被选择或取消选择,具体取决于单击项的状态。
QAbstractItemView::ExtendedSelection3当用户按常规方式选择一个项时,选择将被清除并选择新项。但是,如果用户在单击项时按 Ctrl 键,则单击项将切换,而其他所有项保持不变。如果用户在单击项时按 Shift 键,则从当前项到单击项之间的所有项将被选择或取消选择,具体取决于单击项的状态。通过在项上拖动鼠标可以同时选择多个项。
QAbstractItemView::MultiSelection2当用户按常规方式选择一个项时,该项的选择状态将切换,而其他项保持不变。可以通过在项上拖动鼠标同时切换多个项。
QAbstractItemView::NoSelection0项目不能被选择。

最常用的模式是SingleSelection和ExtendedSelection。

enum QAbstractItemView::状态

描述视图可能处于的不同状态。这通常只有在实现自己的视图时才有用。

常量描述
QAbstractItemView::NoState0这是默认状态。
QAbstractItemView::DraggingState1用户正在拖动项。
QAbstractItemView::DragSelectingState2用户正在选择项。
QAbstractItemView::EditingState3用户正在向商品编辑器中的商品进行编辑。
QAbstractItemView::ExpandingState4用户正在打开项分支。
QAbstractItemView::CollapsingState5用户正在关闭项分支。
QAbstractItemView::AnimatingState6项目视图正在进行动画。

属性文档

alternatingRowColors : bool

该属性用于控制是否使用交替颜色绘制背景

如果此属性设置为 true,则项目背景将使用 QPalette::BaseQPalette::AlternateBase 进行绘制;否则背景将使用 QPalette::Base 颜色。

默认情况下,此属性为 false。

访问函数

boolalternatingRowColors() const
voidsetAlternatingRowColors(bool enable)

autoScroll : bool

该属性用于控制是否在拖动事件中启用自动滚动

如果此属性设置为 true(默认),当用户拖动到视口边缘 16 个像素内时,QAbstractItemView 将自动滚动视图内容。如果当前项改变,则视图将自动滚动以确保当前项完全可见。

此属性仅在没有接受拖放的情况下起作用。将此属性设置为 false 会关闭自动滚动。

访问函数

boolhasAutoScroll() const
voidsetAutoScroll(bool enable)

autoScrollMargin : int

该属性用于控制触发自动滚动时区域的尺寸

该属性控制视口边缘触发自动滚动区域的大小。默认值为 16 像素。

访问函数

intautoScrollMargin() const
voidsetAutoScrollMargin(int margin)

defaultDropAction : Qt::DropAction

该属性用于控制 QAbstractItemView::drag() 将使用的默认放置操作

如果没有设置该属性,并且支持的操作支持 CopyAction,则放置操作为 CopyAction。

访问函数

Qt::DropActiondefaultDropAction() const
voidsetDefaultDropAction(Qt::DropAction dropAction)

另请参阅showDropIndicatordragDropOverwriteMode

dragDropMode : DragDropMode

该属性用于控制视图将要处理的拖放事件

访问函数

QAbstractItemView::DragDropModedragDropMode() const
voidsetDragDropMode(QAbstractItemView::DragDropMode behavior)

另请参阅showDropIndicatordragDropOverwriteMode

dragDropOverwriteMode : bool

该属性用于控制视图的拖放行为

如果其值设置为 true,则在放置时选中的数据将覆盖现有项数据,同时移动数据将清除项。如果其值设置为 false,则在放置数据时将选中的数据作为新项插入。当移动数据时,也将移除项。

默认值是 false,正如 QListViewQTreeView 子类中的情况。另一方面,在 QTableView 子类中,该属性已被设置为 true。

注意:这不是为了防止项被覆盖。模型对 flags() 的实现应该通过不返回 Qt::ItemIsDropEnabled 来防止这一点。

访问函数

booldragDropOverwriteMode() const
voidsetDragDropOverwriteMode(bool overwrite)

另请参阅 dragDropMode.

dragEnabled : bool

此属性表示视图是否支持其自身的拖拽功能

访问函数

booldragEnabled() const
voidsetDragEnabled(bool enable)

另请参阅 showDropIndicatorDragDropModedragDropOverwriteModeacceptDrops

editTriggers : EditTriggers

此属性表示触发项编辑的动作

此属性是EditTrigger枚举定义的标志的组合,使用逻辑或运算符。如果执行的操作设置为该属性,则视图将仅启动项的编辑。

访问函数

QAbstractItemView::EditTriggerseditTriggers() const
voidsetEditTriggers(QAbstractItemView::EditTriggers triggers)

horizontalScrollMode : ScrollMode

视图在水平方向滚动内容的方式

此属性控制视图如何水平滚动其内容。可以按像素或按项进行滚动。默认值来自样式通过QStyle::SH_ItemView_ScrollMode样式提示。

访问函数

QAbstractItemView::ScrollModehorizontalScrollMode() const
voidsetHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
voidresetHorizontalScrollMode()

iconSize : QSize

此属性表示项图标的尺寸

在视图可见时设置此属性将导致项重新布局。

访问函数

QSizeiconSize() const
voidsetIconSize(const QSize &size)

通知信号

voidiconSizeChanged(const QSize &size)

selectionBehavior : SelectionBehavior

此属性表示视图使用的选择行为

此属性表示选择是否基于单个项、行或列。

访问函数

QAbstractItemView::SelectionBehaviorselectionBehavior() const
voidsetSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

另请参阅 SelectionModeSelectionBehavior

selectionMode : SelectionMode

此属性表示视图操作的选择模式

此属性控制用户是否可以选择一个或多个项,在多项选择中,是否选择必须是一系列连续的项。

访问函数

QAbstractItemView::SelectionModeselectionMode() const
voidsetSelectionMode(QAbstractItemView::SelectionMode mode)

另请参阅 SelectionModeSelectionBehavior

showDropIndicator : bool

此属性表示在拖拽项和放置时是否显示放置指示器

访问函数

boolshowDropIndicator() const
voidsetDropIndicatorShown(bool enable)

另请参阅 dragEnabledDragDropModedragDropOverwriteModeacceptDrops

tabKeyNavigation : 布尔值

该属性表示是否启用使用制表符键和退格键进行项目导航。

访问函数

booltabKeyNavigation() const
voidsetTabKeyNavigation(bool enable)

textElideMode : Qt::TextElideMode

该属性表示省略文本中"..."的位置。

所有项目视图的默认值是 Qt::ElideRight

访问函数

Qt::TextElideModetextElideMode() const
voidsetTextElideMode(Qt::TextElideMode mode)

verticalScrollMode : ScrollMode

视图在垂直方向上滚动其内容的方式

该属性控制视图如何垂直滚动其内容。可以按像素或按项目进行滚动。其默认值来自于样式通过QStyle::SH_ItemView_ScrollMode样式提示。

访问函数

QAbstractItemView::ScrollModeverticalScrollMode() const
voidsetVerticalScrollMode(QAbstractItemView::ScrollMode mode)
voidresetVerticalScrollMode()

成员函数文档

[explicit] QAbstractItemView::QAbstractItemView(QWidget *parent = nullptr)

使用指定的父对象构建一个抽象项目视图。

[虚拟nono异常] QAbstractItemView::~QAbstractItemView()

销毁视图。

[信号] void QAbstractItemView::activated(const QModelIndex &index)

当用户激活由索引指定的项目时发出此信号。激活项目的方式依赖于平台;例如,通过单击或双击项目,或者当项目为当前项时按Enter或Return键。

另请参阅clicked(),doubleClicked(),entered()和pressed()。

[槽] void QAbstractItemView::clearSelection()

取消选择所有选定的项目。不会改变当前索引。

另请参阅setSelection()和selectAll()。

[信号] void QAbstractItemView::clicked(const QModelIndex &index)

当左键单击时发出此信号。被鼠标单击的项目由索引指定。仅当索引有效时才发出此信号。

另请参阅activated(),doubleClicked(),entered()和pressed()。

[虚拟保护槽] void QAbstractItemView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint)

关闭指定的 编辑器 并释放它。该 提示 用于指定视图如何响应编辑操作的结束。例如,提示可能会指示视图接下来应该打开哪个项目进行编辑。

另请参阅edit() 和 commitData()。

void QAbstractItemView::closePersistentEditor(const QModelIndex &index)

关闭给定 索引 处的项目持久编辑器。

另请参阅openPersistentEditor() 和 isPersistentEditorOpen()。

[虚拟保护槽] void QAbstractItemView::commitData(QWidget *editor)

将编辑器中的数据提交到模型。

另请参阅closeEditor().

[虚拟保护槽] void QAbstractItemView::currentChanged(const QModelIndex &current, const QModelIndex &previous)

当新项目成为当前项时调用此槽。前一个当前项由 previous 索引指定,新项由 current 索引指定。

如果您想了解项目更改情况,请参阅 dataChanged() 信号。

QModelIndex QAbstractItemView::currentIndex() const

返回当前项的模型索引。

另请参阅setCurrentIndex().

[保护] QPoint QAbstractItemView::dirtyRegionOffset() const

返回视图中脏区域的偏移量。

如果您使用 scrollDirtyRegion() 并在 QAbstractItemView 的子类中实现 paintEvent(),则应使用此函数返回的偏移量转换 paint 事件给出的区域。

注意:在 Qt 提供的视图数据更改 () 中,Qt::ToolTipRole 不受尊重。

[保护] QPoint QAbstractItemView::dirtyRegionOffset() const

返回视图中脏区域的偏移量。

如果您使用 scrollDirtyRegion() 并在 QAbstractItemView 的子类中实现 paintEvent(),您应该在给定的区域上使用从该函数返回的偏移量。

另请参阅scrollDirtyRegion() 和 setDirtyRegion().

[信号] void QAbstractItemView::doubleClicked(const QModelIndex &index)

当鼠标双击按钮时,会发出此信号。通过 index 指定鼠标双击的项。只有当索引有效时,才会发出该信号。

另请参阅clicked() 和 activated()。

[覆盖虚保护] void QAbstractItemView::dragEnterEvent(QDragEnterEvent *event)

重实现: QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)

当拖放操作进入部件时,会调用具有给定 event 的此函数。如果拖动到有效的放置位置(例如,在可以接受拖放的项上方),则接受事件;否则忽略。

另请参阅dropEvent() 和 startDrag()。

[覆盖虚保护] void QAbstractItemView::dragLeaveEvent(QDragLeaveEvent *event)

重实现: QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)

当被拖动的项离开视图时,会调用此函数。该 event 描述了拖放操作的状态。

[覆盖虚保护] void QAbstractItemView::dragMoveEvent(QDragMoveEvent *event)

重实现: QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)

在拖放操作期间,随着给定 event 的调用会持续处理。如果,例如,用户将选择拖动到视图的右侧或底部边缘,可以引起视图滚动。在这种情况下,事件将被接受;否则将被忽略。

另请参阅dropEvent() 和 startDrag()。

[覆盖虚保护] void QAbstractItemView::dropEvent(QDropEvent *event)

重实现: QAbstractScrollArea::dropEvent(QDropEvent *event)

当在部件上发生放置事件时,会调用具有给定 event 的此函数。如果模型接受该事件位置,则接受放置事件;否则忽略。

另请参阅startDrag()。

[保护] QAbstractItemView::DropIndicatorPosition QAbstractItemView::dropIndicatorPosition() const

返回放置指示器的位置,与最靠近的项相关。

[槽] void QAbstractItemView::edit(const QModelIndex &index)

如果可编辑,则开始编辑给定 index 对应的项。

注意,此函数不会更改当前索引。因为当前索引定义了下一个和上一个要编辑的项,用户可能发现键盘导航不像预期的那样工作。为了提供一致的导航行为,在使用该函数之前调用 setCurrentIndex() 以具有相同的模型索引。

另请参阅QModelIndex::flags()。

[虚拟受保护] bool QAbstractItemView::edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event)

从指定的index开始编辑项目,如果需要则创建编辑器,如果视图的当前状态是编辑状态则返回true;否则返回false

触发编辑操作的是trigger,相关的事件由event指定。

可以通过指定triggerQAbstractItemView::AllEditTriggers来强制执行编辑。

另请参阅closeEditor().

[虚拟受保护槽函数] void QAbstractItemView::editorDestroyed(QObject *editor)

当指定的editor被销毁时,将调用此函数。

另请参阅closeEditor().

[信号] void QAbstractItemView::entered(const QModelIndex &index)

当鼠标光标进入由index指定的项目时,将发射此信号。要使用该功能,需要启用鼠标跟踪。

另请参阅viewportEntered()、activated()、clicked()、doubleClicked()和pressed

[覆盖虚拟受保护] bool QAbstractItemView::event(QEvent *event)

重新实现了:QAbstractScrollArea::event(QEvent *event)。

[覆盖虚拟受保护] bool QAbstractItemView::eventFilter(QObject *object, QEvent *event)

重新实现了:QObject::eventFilter(QObject *watched, QEvent *event)。

[受保护] void QAbstractItemView::executeDelayedItemsLayout()

立即执行预定的布局,而不等待事件处理开始。

另请参阅scheduleDelayedItemsLayout

[覆盖虚拟受保护] void QAbstractItemView::focusInEvent(QFocusEvent *event)

重新实现了:QWidget::focusInEvent(QFocusEvent *event)。

此函数使用给定的event调用时,部件获得焦点。默认情况下,事件将被忽略。

另请参阅setFocus()和focusOutEvent

[覆盖虚拟受保护] bool QAbstractItemView::focusNextPrevChild(bool next)

重新实现了:QWidget::focusNextPrevChild(bool next)。

[重写虚保护] void QAbstractItemView::focusOutEvent(QFocusEvent *event)

重实现: QWidget::focusOutEvent(QFocusEvent *event).

该函数在控件失去焦点时由给定的 event 调用。默认情况下,事件被忽略。

另见 clearFocus() 和 focusInEvent().

[纯虚保护] int QAbstractItemView::horizontalOffset() const

返回视图的水平偏移。

在基类中,这是一个纯虚函数。

另见 verticalOffset().

[纯虚] QModelIndex QAbstractItemView::indexAt(const QPoint &point) const

返回视口中指定 point 的项的模型索引。

在基类中,这是一个纯虚函数。

另见 visualRect().

QWidget *QAbstractItemView::indexWidget(const QModelIndex &index) const

返回给定 index 的项的小部件。

另见 setIndexWidget().

[虚保护,自 6.0 版起] void QAbstractItemView::initViewItemOption(QStyleOptionViewItem *option) const

使用视图的调色板、字体、状态、对齐方式等初始化 option 结构。

注意: 此方法的实现应检查接收到的结构的 版本,填充实现所熟悉的所有成员,并在返回之前将版本成员设置为实施支持的版本。

此功能是在 Qt 6.0 版本中引入的。

[重写虚保护] void QAbstractItemView::inputMethodEvent(QInputMethodEvent *event)

重实现: QWidget::inputMethodEvent(QInputMethodEvent *event).

[重写虚] QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const

重实现: QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.

[纯虚保护] bool QAbstractItemView::isIndexHidden(const QModelIndex &index) const

如果由给定 index 指代的项在视图中隐藏,则返回 true,否则返回 false

隐藏是视图特定的功能。例如,在 TableView 中,可以标记列或 TreeView 中的行隐藏。

在基类中,这是一个纯虚函数。

bool QAbstractItemView::isPersistentEditorOpen(const QModelIndex &index) const

返回索引 index 处的项目是否打开了持久编辑器。

也见openPersistentEditor() 和 closePersistentEditor

QAbstractItemDelegate *QAbstractItemView::itemDelegate() const

返回此视图和模型使用的项目代理。这可能是一个通过 setItemDelegate() 设置的代理,或者是默认代理。

也见setItemDelegate

QAbstractItemDelegate *QAbstractItemView::itemDelegateForColumn(int column) const

返回用于给定 column 的项目代理。您可以通过调用 itemDelegate() 来获取给定索引的当前代理指针。

也见setItemDelegateForColumn(),itemDelegateForRow() 和 itemDelegate

[虚函数,自 6.0 版本起] QAbstractItemDelegate *QAbstractItemView::itemDelegateForIndex(const QModelIndex &index) const

返回给定 index 的项目代理和模型所使用的。

此功能是在 Qt 6.0 版本中引入的。

也见setItemDelegate(),setItemDelegateForRow() 和 setItemDelegateForColumn

QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const

返回用于给定 row 的项目代理和模型所使用的,如果没有分配代理,则为 nullptr。您可以通过调用 itemDelegate() 来获取给定索引的当前代理指针。

也见setItemDelegateForRow(),itemDelegateForColumn() 和 setItemDelegate

[重载虚保护函数] void QAbstractItemView::keyPressEvent(QKeyEvent *event)

重实现: QAbstractScrollArea::keyPressEvent(QKeyEvent *e)。

当将按键事件发送到小部件时,会以给定的 event 调用此函数。默认实现处理基本的光标移动,例如向上、向下、向左、向右、Home、PageUp 和 PageDown;如果当前索引有效并且按下了激活键(例如 Enter 或 Return,取决于平台),则发出 activated() 信号。此函数是编辑通过按键触发的位置,例如按下 F2。

也见edit(),moveCursor(),keyboardSearch() 和 tabKeyNavigation

[虚拟] void QAbstractItemView::keyboardSearch(const QString &search)

移动到并选择与字符串search最匹配的项。如果没有找到项,则不执行任何操作。

在默认实现中,如果search为空或自上次搜索以来已超过QApplication::keyboardInputInterval()的时间间隔,则重置搜索。

QAbstractItemModel *QAbstractItemView::model() const

返回此视图所展示的模型。

另请参阅setModel().

[覆盖虚拟受保护] void QAbstractItemView::mouseDoubleClickEvent(QMouseEvent *event)

重实现: QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e).

当在小部件内部双击鼠标按钮时,以给定的event调用此函数。如果在有效项上双击,则发出doubleClicked()信号并调用项上的edit()。

[覆盖虚拟受保护] void QAbstractItemView::mouseMoveEvent(QMouseEvent *event)

重实现: QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e).

当鼠标移动事件发送到小部件时,以给定的event调用此函数。如果正在执行选择操作,并且新项被移动到选择中,则扩展选择;如果正在执行拖动,则继续拖动。

[覆盖虚拟受保护] void QAbstractItemView::mousePressEvent(QMouseEvent *event)

重实现: QAbstractScrollArea::mousePressEvent(QMouseEvent *e).

当鼠标按钮在小部件内部按下时,以给定的event调用此函数。如果在有效项上按下,则将其变为当前项。该函数会发出pressed()信号。

[覆盖虚拟受保护] void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event)

重实现: QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).

当鼠标按钮在小部件上按下并在释放前拖动鼠标到另一个位置时,此函数会调用给定的event。如果正在按下的项,则发出clicked()信号。

[纯虚受保护] QModelIndex QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)

根据给定的光标操作和由修饰符指定的键盘修饰符,返回一个指向视图中的下一个对象的QModelIndex对象。

在基类中,这是一个纯虚函数。

void QAbstractItemView::openPersistentEditor(const QModelIndex &index)

在指定的索引项上打开持久编辑器。如果不存在编辑器,代理将创建一个新的编辑器。

另请参阅closePersistentEditor()和isPersistentEditorOpen

[信号] void QAbstractItemView::pressed(const QModelIndex &index)

当鼠标按钮被按下时,会发出此信号。通过索引指定被按下的项目。只有当索引有效时,才会发出此信号。

使用QGuiApplication::mouseButtons()函数获取鼠标按钮的状态。

另请参阅activatedclickeddoubleClickedentered

[虚拟槽] void QAbstractItemView::reset()

重置视图的内部状态。

警告:此函数将重置打开的编辑器、滚动条位置、选择等。现有更改将不会提交。如果希望在重置视图时保存更改,可以重写此函数,提交您的更改,然后再调用超类的实现。

[覆盖虚拟保护] void QAbstractItemView::resizeEvent(QResizeEvent *event)

重新实现:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。

当向小部件发送尺寸变更事件时,会以给定的事件调用此函数。

另请参阅QWidget::resizeEvent

QModelIndex QAbstractItemView::rootIndex() const

返回模型根项的模型索引。根项是视图顶部项的父项。根项可能为无效。

另请参阅setRootIndex

[虚拟保护槽] void QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)

当将要删除行时,会调用此槽。从startend(含)的parent下的删除行。

另请参阅rowsInserted

[虚拟保护槽] void QAbstractItemView::rowsInserted(const QModelIndex &parent, int start, int end)

当插入行时,会调用此槽。给定parentstartend(含)的新行。基类实现调用模型上的fetchMore()来检查更多数据。

另请参阅rowsAboutToBeRemoved

[受保护] void QAbstractItemView::scheduleDelayedItemsLayout()

在事件处理开始时安排对视图中的项进行布局。

即使scheduleDelayedItemsLayout()在处理事件之前被多次调用,视图也只会执行一次布局。

另请参阅executeDelayedItemsLayout()。

[受保护] void QAbstractItemView::scrollDirtyRegion(int dx, int dy)

通过移动脏区域相反的方向来移动(dx,dy)像素来为滚动做准备。只有在你实现视图子类中的滚动视口时,才需要调用此函数。

如果你已在QAbstractItemView子类中实现了scrollContentsBy(),在调用视口上的QWidget::scroll()之前,调用此函数。或者,只需调用update()。

另请参阅scrollContentsBy(), dirtyRegionOffset(),以及setDirtyRegion

[纯虚函数] void QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible)

如果需要,滚动视图以确保index处的项是可见的。视图将尝试根据提供的hint定位项。

在基类中,这是一个纯虚函数。

[槽] void QAbstractItemView::scrollToBottom()

将视图滚动到底部。

另请参阅scrollTo()和scrollToTop

[槽] void QAbstractItemView::scrollTop()

将视图滚动到顶部。

另请参阅scrollTo()和scrollToBottom

[虚拟槽] void QAbstractItemView::selectAll()

选择视图中的所有项。在执行选择时,此函数将使用设置在视图上的选择行为。

另请参阅setSelection(), selectedIndexes(),以及clearSelection

[虚拟保护] QModelIndexList QAbstractItemView::selectedIndexes() const

此便捷功能返回视图中所有已选择和未隐藏的项索引的列表。列表不包含重复项,且未排序。

另请参阅QItemSelectionModel::selectedIndexes

[虚拟保护槽] void QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

当选择改变时调用此槽。上一个选择(可能为空),由deselected指定,而新的选择由selected指定。

另请参阅 setSelection().

[virtual protected] QItemSelectionModel::SelectionFlags QAbstractItemView::selectionCommand(const QModelIndex &index, const QEvent *event = nullptr) const

返回应在更新指定index的选中模型时使用的SelectionFlags。结果取决于当前的selectionMode(),以及用户输入事件event,它可以是nullptr

重写此函数以定义自己的选择行为。

另请参阅 setSelection().

QItemSelectionModel *QAbstractItemView::selectionModel() const

返回当前的选择模型。

另请参阅 setSelectionModel()和selectedIndexes

[slot] void QAbstractItemView::setCurrentIndex(const QModelIndex &index)

将当前项设置为index处的项。

除非当前选择模式为NoSelection,否则还会选中该项。请注意,此函数还会更新用户执行的新选择的起始位置。

要设置为当前项而不选中它,请调用

selectionModel()->setCurrentIndex(index, QItemSelectionModel::NoUpdate);

另请参阅 currentIndex(),currentChanged(),以及selectionMode

[protected] void QAbstractItemView::setDirtyRegion(const QRegion &region)

将给定的region标记为脏并计划更新。只有在你实现自己的视图子类时才需要调用此函数。

另请参阅 scrollDirtyRegion()和dirtyRegionOffset

void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget)

设置给定index处的项的给定widget,并将窗口的所有权传递给viewport。

如果index无效(例如,如果您传递根索引),则此函数将不执行任何操作。

给定widgetautoFillBackground属性必须设置为true,否则窗口的背景将变为透明,同时显示模型数据和指定的index的项。

如果用索引窗口小部件A替换为索引窗口小部件B,则索引窗口小部件A将被删除。例如,在下面的代码片段中,QLineEdit对象将被删除。

setIndexWidget(index, new QLineEdit);
...
setIndexWidget(index, new QTextEdit);

此功能仅应用于显示与数据项相对应的可视区域内的静态内容。如果您想显示自定义动态内容或实现自定义编辑器小部件,请改用QStyledItemDelegate

另请参阅indexWidget() 和 代理类

void QAbstractItemView::setItemDelegate(QAbstractItemDelegate *delegate)

为此视图及其模型设置项代理为 delegate。如果您想完全控制项目的编辑和显示,这很有用。

现有的代理将被移除,但不会被删除。 QAbstractItemView 不负责 delegate 的所有权。

注意:您不应在视图之间共享相同的代理实例。这样做可能会导致不正确或不直观的编辑行为,因为连接到给定代理的每个视图都可能接收到 closeEditor() 信号,并尝试访问、修改或关闭已关闭的编辑器。

另请参阅itemDelegate

void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)

为此视图和模型设置特定的项 delegate,用于指定的 column。在 column 上的所有项将由 delegate 绘制和管理,而不是使用默认的代理(即,itemDelegate())。

对于 column 的现有列代理将被移除,但不会被删除。 QAbstractItemView 不负责 delegate 的所有权。

注意:如果为行和列都分配了代理,则行代理将具有优先权并管理交叉单元格索引。

注意:您不应在视图之间共享相同的代理实例。这样做可能会导致不正确或不直观的编辑行为,因为连接到给定代理的每个视图都可能接收到 closeEditor() 信号,并尝试访问、修改或关闭已关闭的编辑器。

另请参阅itemDelegateForColumnsetItemDelegateForRowitemDelegate

void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)

为此视图和模型设置特定的项 delegate,用于指定的 row。在 row 上的所有项将由 delegate 绘制和管理,而不是使用默认的代理(即,itemDelegate())。

对于 row 的现有行代理将被移除,但不会被删除。 QAbstractItemView 不负责 delegate 的所有权。

注意:如果为行和列都分配了代理,则行代理(即,此代理)将具有优先权并管理交叉单元格索引。

注意:您不应在视图之间共享相同的代理实例。这样做可能会导致不正确或不直观的编辑行为,因为连接到给定代理的每个视图都可能接收到 closeEditor() 信号,并尝试访问、修改或关闭已关闭的编辑器。

另请参阅itemDelegateForRowsetItemDelegateForColumnitemDelegate

[虚函数] void QAbstractItemView::setModel(QAbstractItemModel *model)

为此视图设置应展示的 model

此函数将创建并设置一个新的选择模型,并用setSelectionModel()替换之前设置的所有模型。然而,旧的模型不会删除,因为它可能被多个视图共享。如果您不再需要它,我们建议您删除旧的模型。这可以通过以下代码实现:

QItemSelectionModel *m = view->selectionModel();
view->setModel(new model);
delete m;

如果旧的模型和旧的模型都没有父对象,或者它们的父对象是长时间存在的对象,那么调用它们的deleteLater()函数以显式删除它们可能更合适。

视图拥有模型的所有权,除非它是模型的父亲对象,因为模型可能被多个不同的视图共享。

另请参阅model()、selectionModel()和setSelectionModel()。

[虚拟槽] void QAbstractItemView::setRootIndex(const QModelIndex &index)

将根项设置为给定index处的项。

另请参阅rootIndex()。

[纯虚保护] void QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)

将选区flags应用到矩形内的项或与其接触的项。

在实现自己的itemview时,setSelection应调用selectionModel()>select(select, flags),其中select要么是一个空的QModelIndex,要么是一个包含rect中所有项的QItemSelection

另请参阅selectionCommand()和selectedIndexes()。

[虚拟] void QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)

将当前选择模型设置为给定的selectionModel

注意,如果您在这个函数之后调用setModel(),给定的selectionModel将被视图创建的一个模型替换。

注意:如果旧的选择模型不再使用;即,如果不是由其他视图使用,则删除它的责任在于应用程序。当其父对象删除时,这会自动发生。但是,如果它没有父对象,或者父对象是一个长时间存在的对象,那么调用其deleteLater()函数以显式删除它可能更合适。

另请参阅selectionModel()、setModel()和clearSelection()。

[受保护] void QAbstractItemView::setState(QAbstractItemView::State state)

将项视图的状态设置为给定的state

另请参阅state()。

[虚拟] int QAbstractItemView::sizeHintForColumn(int column) const

返回指定的宽度大小提示,如果没有模型则返回-1。

此函数用于具有水平表头的视图中,根据给定的内容找到表头部分的尺寸提示。

另请参阅sizeHintForRow

QSize QAbstractItemView::sizeHintForIndex(const QModelIndex &index) const

返回指定索引的项的尺寸提示,对于无效索引返回无效尺寸。

另请参阅sizeHintForRowsizeHintForColumn

[虚拟保护] int QAbstractItemView::sizeHintForRow(int row) const

返回指定的高度尺寸提示,如果没有模型则返回-1。

返回的高度是通过计算给定项的尺寸提示得出来的,即返回值是项中的最大高度。请注意,为了控制行的高度,必须重写QAbstractItemDelegate::sizeHint()函数。

此函数用于具有垂直表头的视图中,根据给定的内容找到表头部分的尺寸提示。

另请参阅sizeHintForColumn

[保护] Qt::DropActions QAbstractItemView::startDrag(Qt::DropActions supportedActions)

通过调用drag->exec()使用给定的支持的操作来启动拖拽。

[保护] QAbstractItemView::State QAbstractItemView::state() const

返回项视图的状态。

另请参阅setState

[重写虚拟保护] void QAbstractItemView::timerEvent(QTimerEvent *event)

重写:QObject::timerEvent(QTimerEvent *event).

此函数在将定时器事件发送到小部件时携带给定的事件被调用。

另请参阅QObject::timerEvent

[槽函数] void QAbstractItemView::update(const QModelIndex &index)

更新给定索引所占用的区域。

[虚拟保护槽函数] void QAbstractItemView::updateGeometries()

更新视图中子小部件的几何形状。

[纯虚保护] int QAbstractItemView::verticalOffset() const

返回视图的垂直偏移量。

在基类中,这是一个纯虚函数。

另请参阅 horizontalOffset()。

[信号] void QAbstractItemView::viewportEntered()

当鼠标光标进入视口时,会发出此信号。需要启用鼠标跟踪才能使用此功能。

另请参阅 entered()。

[重写 virtual protected] bool QAbstractItemView::viewportEvent(QEvent *event)

重写: QAbstractScrollArea::viewportEvent(QEvent *event)

此函数用于处理工具提示和“这是什么?”模式,如果给定的事件eventQEvent::ToolTipQEvent::WhatsThis,则将所有其他事件传递给其基类的viewportEvent()处理器。

如果已识别并处理event,则返回true;否则返回false

[重写 virtual protected] QSize QAbstractItemView::viewportSizeHint() const

重写: QAbstractScrollArea::viewportSizeHint() const

[纯虚] QRect QAbstractItemView::visualRect(const QModelIndex &index) const

返回位于index处的项目所占据的视口矩形。

如果您的项目显示在多个区域中,则visualRect应返回包含index的主要区域,而不是index可能覆盖、接触或引起绘制的完整区域。

在基类中,这是一个纯虚函数。

另请参阅 indexAt()和visualRegionForSelection()。

[纯虚 protected] QRegion QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const

返回给定selection中的项目在视口中的区域。

在基类中,这是一个纯虚函数。

另请参阅 visualRect()和selectedIndexes()。

© 2024 由 Qt 公司 Ltd. 所有权。此处的文档贡献是各自所有者的版权。此文档由自由软件基金会发布,许可条款为GNU自由文档许可协议版本1.3。Qt及其相关标志是Qt公司 Ltd. 在芬兰和其他国家和地区注册的商标。所有其他商标均为各自所有者的财产。