本页内容

QAbstractItemView Class

QAbstractItemView 类为项目视图类提供了基本功能。更多内容...

头文件: #include <QAbstractItemView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QAbstractScrollArea
被继承方:

QColumnView、QHeaderView 、QListView 、QTableView 以及QTreeView

公共类型

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

属性

公共函数

QAbstractItemView(QWidget *parent = nullptr)
virtual ~QAbstractItemView()
bool alternatingRowColors() const
int autoScrollMargin() const
void closePersistentEditor(const QModelIndex &index)
QModelIndex currentIndex() const
Qt::DropAction defaultDropAction() const
QAbstractItemView::DragDropMode dragDropMode() const
bool dragDropOverwriteMode() const
bool dragEnabled() const
QAbstractItemView::EditTriggers editTriggers() const
bool hasAutoScroll() const
QAbstractItemView::ScrollMode horizontalScrollMode() const
QSize iconSize() const
virtual QModelIndex indexAt(const QPoint &point) const = 0
QWidget *indexWidget(const QModelIndex &index) const
bool isPersistentEditorOpen(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 void keyboardSearch(const QString &search)
Qt::MatchFlags keyboardSearchFlags() const
QAbstractItemModel *model() const
void openPersistentEditor(const QModelIndex &index)
void resetHorizontalScrollMode()
void resetVerticalScrollMode()
QModelIndex rootIndex() const
virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) = 0
QAbstractItemView::SelectionBehavior selectionBehavior() const
QAbstractItemView::SelectionMode selectionMode() const
QItemSelectionModel *selectionModel() const
void setAlternatingRowColors(bool enable)
void setAutoScroll(bool enable)
void setAutoScrollMargin(int margin)
void setDefaultDropAction(Qt::DropAction dropAction)
void setDragDropMode(QAbstractItemView::DragDropMode behavior)
void setDragDropOverwriteMode(bool overwrite)
void setDragEnabled(bool enable)
void setDropIndicatorShown(bool enable)
void setEditTriggers(QAbstractItemView::EditTriggers triggers)
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
void setIconSize(const QSize &size)
void setIndexWidget(const QModelIndex &index, QWidget *widget)
void setItemDelegate(QAbstractItemDelegate *delegate)
void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)
void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
void setKeyboardSearchFlags(Qt::MatchFlags searchFlags)
virtual void setModel(QAbstractItemModel *model)
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
void setSelectionMode(QAbstractItemView::SelectionMode mode)
virtual void setSelectionModel(QItemSelectionModel *selectionModel)
void setTabKeyNavigation(bool enable)
void setTextElideMode(Qt::TextElideMode mode)
void setUpdateThreshold(int threshold)
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
bool showDropIndicator() const
virtual int sizeHintForColumn(int column) const
QSize sizeHintForIndex(const QModelIndex &index) const
virtual int sizeHintForRow(int row) const
bool tabKeyNavigation() const
Qt::TextElideMode textElideMode() const
int updateThreshold() const
QAbstractItemView::ScrollMode verticalScrollMode() const
virtual QRect visualRect(const QModelIndex &index) const = 0

重新实现的公共函数

virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override

公共插槽

void clearSelection()
void edit(const QModelIndex &index)
virtual void reset()
void scrollToBottom()
void scrollToTop()
virtual void selectAll()
void setCurrentIndex(const QModelIndex &index)
virtual void setRootIndex(const QModelIndex &index)
void update(const QModelIndex &index)

信号

void activated(const QModelIndex &index)
void clicked(const QModelIndex &index)
void doubleClicked(const QModelIndex &index)
void entered(const QModelIndex &index)
void iconSizeChanged(const QSize &size)
void pressed(const QModelIndex &index)
void viewportEntered()

受保护的类型

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

受保护函数

QPoint dirtyRegionOffset() const
QAbstractItemView::DropIndicatorPosition dropIndicatorPosition() const
virtual bool edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event)
void executeDelayedItemsLayout()
virtual int horizontalOffset() const = 0
(since 6.0) virtual void initViewItemOption(QStyleOptionViewItem *option) const
virtual bool isIndexHidden(const QModelIndex &index) const = 0
virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0
void scheduleDelayedItemsLayout()
void scrollDirtyRegion(int dx, int dy)
virtual QModelIndexList selectedIndexes() const
virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = nullptr) const
void setDirtyRegion(const QRegion &region)
virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) = 0
void setState(QAbstractItemView::State state)
virtual void startDrag(Qt::DropActions supportedActions)
QAbstractItemView::State state() const
virtual int verticalOffset() const = 0
virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0

重新实现的受保护函数

virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *object, QEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void inputMethodEvent(QInputMethodEvent *event) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void timerEvent(QTimerEvent *event) override
virtual bool viewportEvent(QEvent *event) override
virtual QSize viewportSizeHint() const override

受保护的槽

virtual void closeEditor(QWidget*editor, QAbstractItemDelegate::EndEditHinthint)
virtual void commitData(QWidget*editor)
虚拟 void currentChanged(const QModelIndex&current, const QModelIndex&previous)
virtual void dataChanged(const QModelIndex&topLeft, const QModelIndex&bottomRight, const QList<int>&roles= QList<int>())
virtual void editorDestroyed(QObject*editor)
virtual void rowsAboutToBeRemoved(const QModelIndex&parent, intstart, intend)
virtual void rowsInserted(const QModelIndex&parent, intstart, intend)
virtual void selectionChanged(const QItemSelection&selected, const QItemSelection&deselected)
虚拟 void updateGeometries()

详细说明

QAbstractItemView 类是所有使用QAbstractItemModel 的标准视图的基类。QAbstractItemView 是一个抽象类,本身无法被实例化。它通过信号与槽机制提供了一个与模型交互的标准接口,使子类能够及时跟上模型的变化。 该类为键盘和鼠标导航、视口滚动、项编辑以及选择操作提供了标准支持。键盘导航实现了以下功能:

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

请注意,上表假设selection mode 允许执行这些操作。例如,如果选择模式为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()。该类提供了一个默认的选择模型(selectionModel())供使用,但可以通过在setSelectionModel() 中传入QItemSelectionModel 的实例来替换它。

若要完全控制项目的显示和编辑,可以使用setItemDelegate() 指定一个委托。

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

注意:如果 继承了 QAbstractItemView 并打算更新视口的内容,应使用 viewport->update() 而不是update(),因为所有的绘制操作都在视口中进行。

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

成员类型文档

enum QAbstractItemView::CursorAction

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

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

另请参阅 moveCursor()。

enum QAbstractItemView::DragDropMode

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

常量值描述
QAbstractItemView::NoDragDrop0不支持拖放。
QAbstractItemView::DragOnly1视图支持对其自身项目的拖动
QAbstractItemView::DropOnly2该视图支持放置
QAbstractItemView::DragDrop3视图同时支持拖拽和放置
QAbstractItemView::InternalMove4该视图仅接受来自其自身的移动(非复制)操作。

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

另请参阅 setDragDropMode() 以及《在项目视图中使用拖放功能》。

enum QAbstractItemView::DropIndicatorPosition

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

常量值描述
QAbstractItemView::OnItem0项目将被拖放到索引上。
QAbstractItemView::AboveItem1项目将被拖放到索引上方。
QAbstractItemView::BelowItem2该项目将拖放到索引下方。
QAbstractItemView::OnViewport3该项将被拖放到视口内没有其他项的区域。每个视图处理拖放到视口上的项的方式取决于所用底层模型的行为。

enum QAbstractItemView::EditTrigger
flags QAbstractItemView::EditTriggers

此枚举描述了将触发项目编辑的操作。

常量值描述
QAbstractItemView::NoEditTriggers0无法编辑。
QAbstractItemView::CurrentChanged1每当当前项目发生变化时,编辑即开始。
QAbstractItemView::DoubleClicked2双击项目时开始编辑。
QAbstractItemView::SelectedClicked4点击已选中的项目时开始编辑。
QAbstractItemView::EditKeyPressed8当在项目上方按下平台编辑键时,编辑开始。
QAbstractItemView::AnyKeyPressed16当在项目上按下任意键时,开始编辑。
QAbstractItemView::AllEditTriggers31上述所有操作都会触发编辑。

EditTriggers 类型是QFlags<EditTrigger> 的 typedef。它存储 EditTrigger 值的或(OR)组合。

enum QAbstractItemView::ScrollHint

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

enum QAbstractItemView::ScrollMode

描述了滚动条应如何工作。当将滚动模式设置为 ScrollPerPixel 时,单步大小会自动调整,除非已通过 `setSingleStep()` 显式设置。将单步大小设为 -1 可恢复自动调整功能。

常量值描述
QAbstractItemView::ScrollPerItem0视图将一次滚动一个项目。
QAbstractItemView::ScrollPerPixel1视图将一次滚动一个像素。

enum QAbstractItemView::SelectionBehavior

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

enum QAbstractItemView::SelectionMode

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

常量值描述
QAbstractItemView::SingleSelection1当用户选择一个项目时,任何已选中的项目都会被取消选中。用户可以通过在单击已选项目时按住 Ctrl 键来取消对该项目的选择。
QAbstractItemView::ContiguousSelection4当用户以常规方式选择某项时,当前选择会被清除,并选中新项目。但是,如果用户在点击某项时按住 Shift 键,则根据被点击项的状态,当前项与被点击项之间的所有项将被选中或取消选中。
QAbstractItemView::ExtendedSelection3当用户以通常方式选择一个项目时,当前选择会被清除,并选中新的项目。但是,如果用户在点击项目时按住 Ctrl 键,则被点击的项目状态会发生切换,而其他所有项目保持不变。 如果用户在点击项目时按住 Shift 键,则当前项目与被点击项目之间的所有项目将被选中或取消选中,具体取决于被点击项目的状态。通过将鼠标拖拽至多个项目上,可以选中多个项目。
QAbstractItemView::MultiSelection2当用户以通常方式选择一个项目时,该项目的选中状态会发生切换,而其他项目保持不变。通过将鼠标拖拽到多个项目上,可以切换这些项目的选中状态。
QAbstractItemView::NoSelection0无法选择项目。

最常用的模式是 SingleSelection 和 ExtendedSelection。

enum QAbstractItemView::State

描述了视图可能处于的各种状态。通常只有在重写自己的视图时,这一点才值得关注。

常量值描述
QAbstractItemView::NoState0这是默认状态。
QAbstractItemView::DraggingState1用户正在拖动项目。
QAbstractItemView::DragSelectingState2用户正在选择项目。
QAbstractItemView::EditingState3用户正在小部件编辑器中编辑一个项目。
QAbstractItemView::ExpandingState4用户正在打开项目分支。
QAbstractItemView::CollapsingState5用户正在关闭项目分支。
QAbstractItemView::AnimatingState6项目视图正在执行动画。

属性文档

alternatingRowColors : bool

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

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

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

访问函数:

bool alternatingRowColors() const
void setAlternatingRowColors(bool enable)

autoScroll : bool

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

如果该属性设置为 true(默认值),当用户在距视口边缘 16 像素范围内拖动时,QAbstractItemView 会自动滚动视图内容。如果当前项目发生变化,视图将自动滚动以确保当前项目完全可见。

此属性仅在视口支持拖放操作时生效。将此属性设置为 false 可关闭自动滚动功能。

访问函数:

bool hasAutoScroll() const
void setAutoScroll(bool enable)

autoScrollMargin : int

该属性存储触发自动滚动时区域的大小

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

访问函数:

int autoScrollMargin() const
void setAutoScrollMargin(int margin)

defaultDropAction : Qt::DropAction

该属性存储了在 QAbstractItemView::drag() 中默认使用的释放操作。

如果未设置该属性,且支持的操作中包含“复制”操作(CopyAction),则“拖放”操作为“复制”操作。

访问函数:

Qt::DropAction defaultDropAction() const
void setDefaultDropAction(Qt::DropAction dropAction)

另请参阅 showDropIndicator 和dragDropOverwriteMode 。

dragDropMode : DragDropMode

该属性用于存储视图将响应的拖放事件

访问函数:

QAbstractItemView::DragDropMode dragDropMode() const
void setDragDropMode(QAbstractItemView::DragDropMode behavior)

另请参阅 showDropIndicator 和dragDropOverwriteMode 。

dragDropOverwriteMode : bool

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

如果其值为true ,则在拖放时,所选数据将覆盖现有项目数据;而移动数据时,该项目将被清空。如果其值为false ,则在拖放时,所选数据将作为新项目插入;当数据被移动时,该项目也将被移除。

默认值为false ,与QListView 和QTreeView 子类中的设置一致。而在QTableView 子类中,该属性的值则被设置为true 。

注意:这并非旨在防止覆盖项目。模型中对 flags() 的实现应通过不返回Qt::ItemIsDropEnabled 来实现这一目的。

访问函数:

bool dragDropOverwriteMode() const
void setDragDropOverwriteMode(bool overwrite)

另请参阅 dragDropMode 。

dragEnabled : bool

该属性表示视图是否支持对其自身项目进行拖拽

访问函数:

bool dragEnabled() const
void setDragEnabled(bool enable)

另请参阅 showDropIndicator 、DragDropMode 、dragDropOverwriteMode 以及acceptDrops 。

editTriggers : EditTriggers

该属性用于指定哪些操作会触发项目编辑

该属性由EditTrigger 中定义的一组标志组成,并通过“或”运算符组合而成。只有当执行的操作在此属性中被设置时,视图才会启动项目的编辑。

默认值为:

访问函数:

QAbstractItemView::EditTriggers editTriggers() const
void setEditTriggers(QAbstractItemView::EditTriggers triggers)

horizontalScrollMode : ScrollMode

视图如何在水平方向滚动其内容

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

访问函数:

QAbstractItemView::ScrollMode horizontalScrollMode() const
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
void resetHorizontalScrollMode()

iconSize : QSize

该属性存储项目图标的大小

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

访问函数:

QSize iconSize() const
void setIconSize(const QSize &size)

通知信号:

void iconSizeChanged(const QSize &size)

[since 6.11] keyboardSearchFlags : Qt::MatchFlags

该属性决定了keyboardSearch() 的默认实现如何将给定的字符串与模型的数据进行匹配。

默认值为 `Qt::MatchStartsWith|Qt::MatchWrap`。

该枚举类型在 Qt 6.11 中引入。

访问函数:

Qt::MatchFlags keyboardSearchFlags() const
void setKeyboardSearchFlags(Qt::MatchFlags searchFlags)

另请参阅 keyboardSearch() 和QAbstractItemModel::match()。

selectionBehavior : SelectionBehavior

该属性决定了视图采用哪种选择行为

该属性指定选择操作是针对单个项目、行还是列进行的。

访问函数:

QAbstractItemView::SelectionBehavior selectionBehavior() const
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

另请参阅 SelectionMode 和SelectionBehavior 。

selectionMode : SelectionMode

该属性用于指定视图运行时的选择模式

该属性控制用户可以选择一个或多个项目,以及在多项目选择中,选择是否必须为连续的项目范围。

访问函数:

QAbstractItemView::SelectionMode selectionMode() const
void setSelectionMode(QAbstractItemView::SelectionMode mode)

另请参阅 SelectionMode 和SelectionBehavior 。

showDropIndicator : bool

此属性控制在拖放项目时是否显示拖放指示器。

访问函数:

bool showDropIndicator() const
void setDropIndicatorShown(bool enable)

另请参阅 dragEnabled 、DragDropMode 、dragDropOverwriteMode 以及acceptDrops 。

tabKeyNavigation : bool

该属性用于控制是否启用通过 Tab 和 Back Tab 键进行项目导航的功能。

访问函数:

bool tabKeyNavigation() const
void setTabKeyNavigation(bool enable)

textElideMode : Qt::TextElideMode

该属性用于指定省略文本中“...”的位置。

所有项目视图的默认值均为Qt::ElideRight 。

访问函数:

Qt::TextElideMode textElideMode() const
void setTextElideMode(Qt::TextElideMode mode)

[since 6.9] updateThreshold : int

该属性保存了发生变化的索引数量,用于在dataChanged() 方法中直接触发视图的完整更新。

dataChanged() 中的算法会通过计算已更改索引是否可见,来尽量减少视图的完整更新。 对于非常大的模型,且存在大量重大变更时,此检查可能比实际更新耗时更长,因此适得其反。当发生变化的索引数量超过指定值时,此属性可控制算法跳过检查并直接触发视图的完整更新。

默认值为 200。

该枚举类型在 Qt 6.9 中引入。

访问函数:

int updateThreshold() const
void setUpdateThreshold(int threshold)

另请参阅 ` dataChanged()`。

verticalScrollMode : ScrollMode

视图如何在垂直方向上滚动其内容

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

访问函数:

QAbstractItemView::ScrollMode verticalScrollMode() const
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
void resetVerticalScrollMode()

成员函数文档

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

使用给定的parent 构建一个抽象项目视图。

[virtual noexcept] QAbstractItemView::~QAbstractItemView()

破坏了视觉效果。

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

当用户激活由index 指定的项目时,会发出此信号。项目的激活方式取决于平台;例如,单击或双击该项目,或者在该项目处于活动状态时按下 Return 或 Enter 键。

另请参阅 clicked()、doubleClicked()、entered() 以及pressed()。

[slot] void QAbstractItemView::clearSelection()

取消选中所有已选中的项目。当前索引不会发生变化。

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

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

当鼠标左键被单击时,会发出此信号。鼠标单击的项目由 `index` 指定。只有当该索引有效时,才会发出此信号。

另请参阅 activated()、doubleClicked()、entered() 以及pressed()。

[virtual protected slot] void QAbstractItemView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint)

关闭指定的editor ,并释放该对象。hint 用于指定视图在编辑操作结束时应如何响应。例如,该提示可能指示应打开视图中的下一个项目以供编辑。

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

void QAbstractItemView::closePersistentEditor(const QModelIndex &index)

关闭位于指定index 处的该项的持久化编辑器。

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

[virtual protected slot] void QAbstractItemView::commitData(QWidget *editor)

将editor 中的数据提交到模型中。

另请参阅 closeEditor()。

[virtual protected slot] void QAbstractItemView::currentChanged(const QModelIndex &current, const QModelIndex &previous)

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

若要了解项的变更情况,请参阅dataChanged() 信号。

QModelIndex QAbstractItemView::currentIndex() const

返回当前项目的模型索引。

另请参阅 setCurrentIndex()。

[virtual protected slot] void QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())

当模型中具有指定roles 的项发生变更时,会调用此插槽。发生变更的项范围为topLeft 至bottomRight (含)。如果仅有一项发生变更,则topLeft ==bottomRight 。

被修改的roles 既可以是空容器(表示所有内容均已更改),也可以是包含已更改角色子集的非空容器。

注意: 在 Qt XML 提供的视图中,dataChanged() 方法不会处理Qt::ToolTipRole 。

[protected] QPoint QAbstractItemView::dirtyRegionOffset() const

返回视图中已修改区域的偏移量。

如果您在QAbstractItemView 的子类中使用了scrollDirtyRegion()并实现了paintEvent()方法,则应使用本函数返回的偏移量对paint事件指定的绘制区域进行转换。

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

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

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

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

[override virtual protected] void QAbstractItemView::dragEnterEvent(QDragEnterEvent *event)

重写自:QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)。

当拖放操作进入该控件时,系统会使用给定的event 调用此函数。如果拖放操作位于有效的放置位置上(例如位于接受放置的项上),则接受该事件;否则,该事件将被忽略。

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

[override virtual protected] void QAbstractItemView::dragLeaveEvent(QDragLeaveEvent *event)

重写自:QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)。

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

[override virtual protected] void QAbstractItemView::dragMoveEvent(QDragMoveEvent *event)

重写:QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)。

在控件上进行拖放操作期间,系统会持续调用该函数,并传入给定的event 。例如,当用户将选区拖动到视图的右侧或底部边缘时,该函数可能会触发视图滚动。在此情况下,该事件将被接受;否则将被忽略。

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

[override virtual protected] void QAbstractItemView::dropEvent(QDropEvent *event)

重写自:QAbstractScrollArea::dropEvent(QDropEvent *event)。

当小部件上发生拖放事件时,系统会调用此函数并传入给定的event 。如果模型接受该事件的位置,则接受该拖放事件;否则将其忽略。

另请参阅 startDrag()。

[protected] QAbstractItemView::DropIndicatorPosition QAbstractItemView::dropIndicatorPosition() const

返回拖放指示器相对于最近项目的位置。

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

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

请注意,此函数不会更改当前索引。由于当前索引定义了要编辑的下一个和上一个项目,用户可能会发现键盘导航无法按预期工作。为了确保导航行为的一致性,请在调用此函数之前,使用相同的模型索引调用 `setCurrentIndex()`。

注意:此 插槽已重载。要连接到此插槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        abstractItemView, qOverload(&QAbstractItemView::edit));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        abstractItemView, [receiver = abstractItemView](const QModelIndex &index) { receiver->edit(index); });
有关更多示例和方法,请参阅“连接到重载槽”。

另请参阅 ` QModelIndex::flags()`。

[virtual protected] bool QAbstractItemView::edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event)

开始编辑位于index 的项目,必要时创建编辑器,如果视图的State 当前为EditingState ,则返回true ;否则返回false 。

触发编辑过程的操作由trigger 描述,相关事件由event 指定。

可以通过将trigger 指定为QAbstractItemView::AllEditTriggers 来强制进行编辑。

另请参阅 closeEditor()。

[virtual protected slot] void QAbstractItemView::editorDestroyed(QObject *editor)

当给定的editor 被销毁时,会调用此函数。

另请参阅 closeEditor()。

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

当鼠标光标进入由 `index` 指定的项目时,会触发此信号。要使此功能正常工作,需要启用鼠标跟踪。

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

[override virtual protected] bool QAbstractItemView::event(QEvent *event)

重写了:QAbstractScrollArea::event(QEvent *event)。

[override virtual protected] bool QAbstractItemView::eventFilter(QObject *object, QEvent *event)

重写了:QObject::eventFilter(QObject *watched, QEvent *event)。

[protected] void QAbstractItemView::executeDelayedItemsLayout()

执行计划的布局,而不等待事件处理开始。

另请参阅 scheduleDelayedItemsLayout()。

[override virtual protected] void QAbstractItemView::focusInEvent(QFocusEvent *event)

重写自:QWidget::focusInEvent(QFocusEvent *event)。

当控件获得焦点时,会调用此函数并传入给定的event 。默认情况下,该事件会被忽略。

另请参阅 setFocus() 和focusOutEvent()。

[override virtual protected] bool QAbstractItemView::focusNextPrevChild(bool next)

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

[override virtual protected] void QAbstractItemView::focusOutEvent(QFocusEvent *event)

重写自:QWidget::focusOutEvent(QFocusEvent *event)。

当控件失去焦点时,会调用此函数并传入给定的event 。默认情况下,该事件将被忽略。

另请参见 clearFocus() 和focusInEvent()。

[pure virtual protected] int QAbstractItemView::horizontalOffset() const

返回视图的水平偏移量。

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

另请参阅 verticalOffset()。

[pure virtual] QModelIndex QAbstractItemView::indexAt(const QPoint &point) const

返回位于视口坐标point 处的项的模型索引。

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

另请参阅 visualRect()。

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

返回位于指定位置 `index` 的项所对应的小部件。

另请参阅 setIndexWidget()。

[virtual protected, since 6.0] void QAbstractItemView::initViewItemOption(QStyleOptionViewItem *option) const

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

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

该函数在 Qt 6.0 中引入。

[override virtual protected] void QAbstractItemView::inputMethodEvent(QInputMethodEvent *event)

重写了:QWidget::inputMethodEvent(QInputMethodEvent *event)。

[override virtual] QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const

重写了:QWidget::inputMethodQuery (Qt::InputMethodQuery query)const。

[pure virtual protected] 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()。

[virtual, since 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()。

[override virtual protected] void QAbstractItemView::keyPressEvent(QKeyEvent *event)

重写自:QAbstractScrollArea::keyPressEvent(QKeyEvent *e)。

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

另请参阅 edit()、moveCursor()、keyboardSearch() 和tabKeyNavigation 。

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

移动光标并选中与字符串search 最匹配的项目。如果未找到该项目,则不执行任何操作。

在默认实现中,若search 为空,或者自上次搜索以来经过的时间间隔超过了QApplication::keyboardInputInterval(),则搜索将被重置。

QAbstractItemModel *QAbstractItemView::model() const

返回该视图所呈现的模型。

另请参阅 setModel()。

[override virtual protected] void QAbstractItemView::mouseDoubleClickEvent(QMouseEvent *event)

重写自:QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)。

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

[override virtual protected] void QAbstractItemView::mouseMoveEvent(QMouseEvent *event)

重写自:QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)。

当鼠标移动事件发送至小部件时,将调用此函数并传入给定的event 。如果当前正在进行选择操作,且新项目移动至选区上方,则选区将被扩展;如果当前正在进行拖拽操作,则该操作将继续进行。

[override virtual protected] void QAbstractItemView::mousePressEvent(QMouseEvent *event)

重写自:QAbstractScrollArea::mousePressEvent(QMouseEvent *e)。

当光标位于小部件内部时,若鼠标按钮被按下,则会调用此函数并传入给定的event 参数。若按下的是一项有效的项目,则将其设为当前项目。此函数会触发pressed()信号。

[override virtual protected] void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event)

重写自:QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)。

当小部件发生鼠标按下事件后,用户松开鼠标按钮时,将调用此函数并传入给定的event 。如果用户在小部件内部点击鼠标,然后将鼠标拖动到其他位置后才松开鼠标按钮,则小部件会收到释放事件。如果此时有项目正被按下,该函数将发出clicked()信号。

[pure virtual protected] QModelIndex QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)

根据给定的cursorAction 以及由modifiers 指定的键盘修饰键,返回一个指向视图中下一个对象的QModelIndex 对象。

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

void QAbstractItemView::openPersistentEditor(const QModelIndex &index)

在指定位置index 处的项目上打开一个持久化编辑器。如果不存在编辑器,该委托将创建一个新的编辑器。

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

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

当鼠标按钮被按下时,会发出此信号。鼠标被按下的对象由index 指定。只有当该索引有效时,才会发出此信号。

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

另请参阅 activated()、clicked()、doubleClicked() 和entered()。

[virtual slot] void QAbstractItemView::reset()

重置视图的内部状态。

警告:此 函数将重置已打开的编辑器、滚动条位置、选中内容等。现有的更改将不会被提交。若您希望在重置视图时保存更改,可以重写此函数,先提交更改,然后调用父类的实现。

[override virtual protected] void QAbstractItemView::resizeEvent(QResizeEvent *event)

重写自:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。

当向小部件发送调整大小事件时,会调用此函数并传入给定的event 。

另请参见 QWidget::resizeEvent()。

QModelIndex QAbstractItemView::rootIndex() const

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

另请参阅 setRootIndex()。

[virtual protected slot] void QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)

当行即将被删除时,会调用此插槽。被删除的行是位于给定parent (范围从start 到end ,包含 在内)下的行。

另请参阅 rowsInserted()。

[virtual protected slot] void QAbstractItemView::rowsInserted(const QModelIndex &parent, int start, int end)

当插入行时会调用此插槽。新行是指位于给定parent 下的、从start 到end (含)之间的行。基类的实现会调用模型上的fetchMore()方法来检查是否还有更多数据。

另请参阅 rowsAboutToBeRemoved()。

[protected] void QAbstractItemView::scheduleDelayedItemsLayout()

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

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

另请参阅 ` executeDelayedItemsLayout()`。

[protected] void QAbstractItemView::scrollDirtyRegion(int dx, int dy)

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

若在QAbstractItemView 的子类中实现了scrollContentsBy(),请在对视口调用QWidget::scroll() 之前调用此函数。或者,直接调用update() 即可。

另请参阅 scrollContentsBy()、dirtyRegionOffset() 和setDirtyRegion()。

[pure virtual] void QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible)

如有必要,滚动视图以确保位于index 处的项目可见。视图将尝试根据给定的hint 对该项目进行定位。

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

[slot] void QAbstractItemView::scrollToBottom()

将视图滚动到底部。

另请参阅 scrollTo() 和scrollToTop()。

[slot] void QAbstractItemView::scrollToTop()

将视图滚动到顶部。

另请参阅 scrollTo() 和scrollToBottom()。

[virtual slot] void QAbstractItemView::selectAll()

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

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

[virtual protected] QModelIndexList QAbstractItemView::selectedIndexes() const

此便利函数返回视图中所有已选中且未被隐藏的项目索引列表。该列表不包含重复项,且未按顺序排序。

另请参阅 QItemSelectionModel::selectedIndexes()。

[virtual protected slot] 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)

将给定的widget 设置到位于index 处的项目上,并将控件的所有权转移给视口。

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

所给widget 的autoFillBackground 属性必须设置为true,否则小部件的背景将为透明,同时显示模型数据和位于给定index 处的项。

注意:视图将 拥有widget 的所有权。这意味着如果索引控件 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() 信号,并试图访问、修改或关闭一个已被关闭的编辑器。

另请参阅 itemDelegateForColumn()、setItemDelegateForRow() 和itemDelegate()。

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

将给定的delegate 项设置为该视图和模型所使用的、针对给定row 的项。row 上的所有项都将由delegate 进行绘制和管理,而非使用默认委托(即itemDelegate())。

row 上任何现有的行委托都将被移除,但不会被删除。QAbstractItemView 不会接管delegate 的所有权。

注意:如果 一个委托同时被分配给行和列,则行委托(即此委托)将具有优先级,并管理交叉单元格索引。

警告:不应在 不同视图之间共享同一个委托实例。这样做可能会导致编辑行为不正确或不符合直觉,因为连接到给定委托的每个视图都可能收到closeEditor() 信号,并试图访问、修改或关闭一个已经关闭的编辑器。

另请参阅 itemDelegateForRow()、setItemDelegateForColumn() 和itemDelegate()。

[virtual] void QAbstractItemView::setModel(QAbstractItemModel *model)

设置要呈现的视图的model 。

此函数将创建并设置一个新的选择模型,替换之前通过setSelectionModel()设置的任何模型。但是,旧的选择模型不会被删除,因为它可能被多个视图共享。我们建议您在不再需要旧的选择模型时将其删除。可通过以下代码实现:

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

如果旧模型和旧选择模型均无父对象,或者其父对象是长期存在的对象,则最好调用它们的 `deleteLater()` 函数来显式删除它们。

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

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

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

将根项目设置为位于指定index 处的项目。

另请参阅 rootIndex()。

[pure virtual protected] void QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)

将选择操作flags 应用于矩形rect 内的或被该矩形触及的项目。

在实现自定义项视图时,setSelection 方法应调用selectionModel()->select(selection, flags),其中 selection 要么是空的QModelIndex ,要么是QItemSelection ,且该 包含rect 中所有项目。

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

[virtual] void QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)

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

请注意,如果在此函数之后调用setModel(),则给定的selectionModel 将被视图创建的一个对象所替换。

注意: 如果旧的选择模型不再需要(即其他视图不再使用它),则 由应用程序决定是否 删除该模型。 当其父对象被删除时,这将自动发生。但是,如果它没有父对象,或者父对象是一个长期存在的对象,最好调用其deleteLater() 函数来显式地删除它。

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

[protected] void QAbstractItemView::setState(QAbstractItemView::State state)

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

另请参阅 state()。

[virtual] int QAbstractItemView::sizeHintForColumn(int column) const

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

此函数用于带有水平标题栏的视图中,根据给定的column 的内容来查找标题栏部分的尺寸提示。

另请参阅 sizeHintForRow()。

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

返回具有指定index 的项的大小提示,对于无效索引,则返回无效大小。

另请参阅 sizeHintForRow() 和sizeHintForColumn()。

[virtual] int QAbstractItemView::sizeHintForRow(int row) const

返回指定row 的高度尺寸提示;若无模型,则返回-1。

返回的高度是根据给定row 中各项的大小提示计算得出的,即返回值是各项中的最大高度。请注意,要控制行的高度,必须重写QAbstractItemDelegate::sizeHint()函数。

此函数用于带有垂直标题栏的视图中,根据给定的row 的内容来查找标题部分的大小提示。

另请参阅 sizeHintForColumn()。

[virtual protected] void QAbstractItemView::startDrag(Qt::DropActions supportedActions)

通过调用 drag->exec() 并传入给定的 `supportedActions` 来启动拖拽操作。

[protected] QAbstractItemView::State QAbstractItemView::state() const

返回项目视图的状态。

另请参阅 setState()。

[override virtual protected] void QAbstractItemView::timerEvent(QTimerEvent *event)

重写了:QObject::timerEvent(QTimerEvent *event)。

当定时器事件发送至小部件时,将调用此函数并传入给定的event 。

另请参阅 QObject::timerEvent()。

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

更新给定index 所占用的区域。

[virtual protected slot] void QAbstractItemView::updateGeometries()

更新视图中子控件的几何属性。

[pure virtual protected] int QAbstractItemView::verticalOffset() const

返回视图的垂直偏移量。

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

另请参阅 horizontalOffset()。

[signal] void QAbstractItemView::viewportEntered()

当鼠标光标进入视口时,会触发此信号。要使此功能正常工作,需要启用鼠标跟踪。

另请参阅 entered()。

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

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

如果给定的event 是QEvent::ToolTip 或QEvent::WhatsThis ,则此函数用于处理工具提示和“这是什么?”模式。对于所有其他事件,它会将其转发给基类的viewportEvent()处理程序。

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

[override virtual protected] QSize QAbstractItemView::viewportSizeHint() const

重新实现了:QAbstractScrollArea::viewportSizeHint() const。

[pure virtual] QRect QAbstractItemView::visualRect(const QModelIndex &index) const

返回该项在视口index 处所占的矩形区域。

如果该项显示在多个区域中,则 visualRect 应返回包含该索引的主区域,而非该索引可能涵盖、触及或导致绘制的完整区域。

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

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

[pure virtual protected] QRegion QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const

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

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

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

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.