QAbstractItemView Class

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

Header: #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)
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)
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::EndEditHint hint)
virtual void commitData(QWidget *editor)
virtual 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, int start, int end)
virtual void rowsInserted(const QModelIndex &parent, int start, int end)
virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
virtual void updateGeometries()

详细说明

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

按键功能
箭头键更改当前项目并将其选中。
Ctrl+ 箭头键更改当前项目,但不选择该项目。
Shift+ 箭头键更改当前项目并将其选中。之前选中的项目不会取消选择。
Ctrl+Space切换当前项目的选择。
Tab/Backtab将当前项目更改为下一个/上一个项目。
主页/末页选择模型中的第一个/最后一个项目。
向上翻页/向下翻页按视图中可见行数向上/向下滚动显示行。
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项目将被下放到视口中没有项目的区域。每个视图处理下放到视口中的项目的方式取决于所使用的底层模型的行为。

枚举 QAbstractItemView::EditTrigger
flags QAbstractItemView::EditTriggers

该枚举描述了启动项目编辑的操作。

常量说明
QAbstractItemView::NoEditTriggers0无法编辑。
QAbstractItemView::CurrentChanged1当前项目发生变化时开始编辑。
QAbstractItemView::DoubleClicked2双击项目时开始编辑。
QAbstractItemView::SelectedClicked4点击已选项目时开始编辑。
QAbstractItemView::EditKeyPressed8在项目上按下平台编辑键时开始编辑。
QAbstractItemView::AnyKeyPressed16在项目上按任意键时开始编辑。
QAbstractItemView::AllEditTriggers31上述所有操作均开始编辑。

EditTriggers 类型是QFlags<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::BaseQPalette::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 时,下拉操作将是 CopyAction。

访问函数:

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

另请参阅 showDropIndicatordragDropOverwriteMode

dragDropMode : DragDropMode

此属性保存视图将执行的拖放事件

访问功能:

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

另请参阅 showDropIndicatordragDropOverwriteMode

dragDropOverwriteMode : bool

此属性保留视图的拖放行为

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

QListViewQTreeView 子类一样,默认值为false 。而在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 定义的标志选择,并使用 OR 运算符进行组合。只有当所执行的操作在此属性中设置时,视图才会启动项目编辑。

默认值为

访问功能:

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)

selectionBehavior : SelectionBehavior

该属性显示视图使用的选择行为

该属性显示选择是按单个项目、行还是列进行的。

访问功能:

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

另请参阅 SelectionModeSelectionBehavior

selectionMode : SelectionMode

该属性表示视图在哪种选择模式下运行

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

访问功能:

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

另请参阅 SelectionModeSelectionBehavior

showDropIndicator : bool

该属性用于保存拖放项目时是否显示下拉指示符。

访问功能:

bool showDropIndicator() const
void setDropIndicatorShown(bool enable)

另请参阅 dragEnabled,DragDropMode,dragDropOverwriteMode, 和acceptDrops

tabKeyNavigation : bool

该属性用于确定是否启用带标签页和后标签页的项目导航。

访问功能

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 的项目发生变化时,将调用此槽。更改的项目是从topLeftbottomRight (包括 )的项目。如果只有一个项目发生变化,topLeft ==bottomRight

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

注意: 在 Qt XML 提供的视图中,dataChanged() 不支持Qt::ToolTipRole

[protected] QPoint QAbstractItemView::dirtyRegionOffset() const

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

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

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

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

双击鼠标按钮时发出该信号。鼠标被双击的项目由index 指定。该信号仅在索引有效时发出。

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

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

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

当拖放操作进入 widget 时,该函数将被调用,调用时给定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() 并使用相同的模型索引。

另请参见 QModelIndex::flags()。

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

开始编辑index 上的项目,必要时创建一个编辑器,如果视图的State 现在是EditingState ,则返回true ;否则返回false

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

可以通过指定triggerQAbstractItemView::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 的项目的 widget。

另请参阅 setIndexWidget() 。

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

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

注意: 该方法的实现应检查所接收结构的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)。

当有按键事件发送到 widget 时,该函数会以给定的event 调用。默认实现处理基本的光标移动,例如上、下、左、右、主页、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)。

当鼠标按键在 widget 内被双击时,该函数会以给定的event 调用。如果双击的是一个有效的项目,它将发出doubleClicked() 信号,并调用edit() 来处理该项目。

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

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

当鼠标移动事件发送到 widget 时,该函数会以给定的event 调用。如果选择正在进行,且有新项目移过,则会扩展选择;如果拖动正在进行,则会继续拖动。

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

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

当光标在 widget 内按下鼠标键时,该函数会以给定的event 调用。如果一个有效的项目被按下,它将成为当前项目。该函数将发出pressed() 信号。

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

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

在部件上发生鼠标按下事件后,当鼠标按钮被释放时,该函数会以给定的event 调用。如果用户在您的 widget 中按下鼠标,然后在释放鼠标键之前将鼠标拖到另一个位置,您的 widget 就会收到释放事件。如果有项目被按下,该函数将发出clicked() 信号。

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

根据给定的cursorActionmodifiers 指定的键盘修改器,返回指向视图中下一个对象的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)。

当有调整大小事件发送到 widget 时,该函数会以给定的event 调用。

另请参见 QWidget::resizeEvent().

QModelIndex QAbstractItemView::rootIndex() const

返回模型根项的模型索引。根项目是视图顶层项目的父项目。根项目可以是无效的。

另请参阅 setRootIndex()。

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

当记录即将被删除时,会调用此槽。删除的记录是给定的parent 下从startend (含)的那些记录。

另请参见 rowsInserted()。

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

插入记录时会调用此槽。新插入的记录是给定的parent 下的记录,从startend (含)。基类实现会调用模型上的 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 标记为 dirty,并安排更新时间。只有在实现自己的视图子类时才需要调用此函数。

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

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

index 的项目上设置给定的widget ,并将 widget 的所有权传递给视口。

如果index 无效(例如,如果您传递的是根索引),此函数将不起作用。

给定的widgetautoFillBackground 属性必须设置为 true,否则 widget 的背景将是透明的,同时显示模型数据和位于给定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 ,用于给定的columncolumn 上的所有项目都将由delegate 绘制和管理,而不是使用默认委托(即itemDelegate() )。

column QAbstractItemView 不拥有 的所有权。delegate

注意: 如果已为某一行和某一列分配了委托,则行委托将优先管理相交单元格的索引。

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

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

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

设置该视图和模型使用的给定项目delegate ,用于给定的rowrow 上的所有项目都将由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

在实现自己的 itemview setSelection 时,应调用selectionModel()->select(selection, flags),其中 selection 可以是空的QModelIndex ,也可以是包含rect 中所有项目的QItemSelection

另请参见 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)

使用给定的supportedActions 调用 drag->exec(),开始拖动。

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

返回项目视图的状态。

另请参阅 setState()。

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

重实现:QObject::timerEvent(QTimerEvent *event)。

当定时器事件发送到 widget 时,使用给定的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)。

如果给定的eventQEvent::ToolTipQEvent::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()。

© 2025 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.