QListView讲解

简介

    ListView类为模型提供了一个列表或图标视图。项目文件(.pro)添加QT += widgets,头文件中包含#include < QListView > ,即可在自己的项目中使用QListView 类。QListView 父类是QAbstractItemView类;子类有QListWidget , QUndoView。

公有类型

后面详细介绍各类型的具体含义
Flow 、LayoutMode、Movement 、ResizeMode、ViewMode

属性

batchSize : int
flow : Flow
gridSize : QSize
isWrapping : bool
itemAlignment : Qt::Alignment
layoutMode : LayoutMode
modelColumn : int
movement : Movement
resizeMode : ResizeMode
selectionRectVisible : bool
spacing : int
uniformItemSizes : bool
viewMode : ViewMode
wordWrap : bool

信号

void indexesMoved(const QModelIndexList &indexes)

细节描述

在这里插入图片描述
    QListView表示存储在模型中的项,或者作为一个简单的非分层列表,或者作为一个图标集合。这个类用于提供列表和图标视图,这些视图以前是由QListBox和QIconView类提供的,但是使用Qt的模型/视图体系结构提供的更灵活的方法。
    QListView类是模型/视图类之一,是Qt模型/视图框架的一部分。此视图不显示水平或垂直标题;要显示带有水平标题的项目列表,请使用QTreeView。
    QListView实现了由QAbstractItemView类定义的接口,以允许它显示由QAbstractItemModel类派生的模型提供的数据。
    列表视图中的项可以使用以下两种视图模式之一来显示:在ListMode中,项以简单列表的形式显示;在IconMode中,列表视图采用图标视图的形式,其中项目以图标显示,就像文件管理器中的文件一样。缺省情况下,列表视图为ListMode模式。要更改视图模式,请使用setViewMode()函数,要确定当前视图模式,请使用viewMode()。
    这些视图中的项按照列表视图的flow()指定的方向进行布局。根据视图的movement()状态,这些项可以固定在适当的位置,也可以允许移动。
    如果模型中的项不能完全按照流的方向布局,则可以将它们包裹在视图小部件的边界处;这取决于iswrapped()。当项目由图标视图表示时,此属性非常有用。
    resizeMode()和layoutMode()控制项目的布局方式和时间。项目根据它们的spacing()进行间隔,并且可以存在于gridSize()指定的大小的概念网格中。根据项目的iconSize(),项目可以呈现为大图标或小图标。

性能提升

    在显示大量项目时,可以为视图提供有关其正在处理的数据的提示,以提高其性能。对于想要显示大小相等的项的视图,可以采用的一种方法是将uniformItemSizes属性设置为true。
参见 View Classes, Item Views Puzzle Example, QTreeView, QTableView, and QListWidget.

成员类型说明

enum QListView::Flow

枚举值描述
QListView::LeftToRight0项从左到右排列在视图中
QListView::TopToBottom1项从上到下排列在视图中

enum QListView::LayoutMode

枚举值描述
QListView::SinglePass0一次展示所有项The items are laid out all at once.
QListView::Batched1以项的batchSize批量展示项

参见 batchSize.

enum QListView::Movement

枚举值描述
QListView::Static0用户不能移动项
QListView::Free1用户可以自由移动项
QListView::Snap2在移动时,项会与指定的网格对齐;查看setGridSize()

enum QListView::ResizeMode

枚举值描述
QListView::Fixed0项只会在视图第一次显示时进行布局
QListView::Adjust1每次调整视图大小时,项都将被重新布局

enum QListView::ViewMode

枚举值描述
QListView::ListMode0项使用TopToBottom进行布局,具有小尺寸和静态移动
QListView::IconMode1项使用LeftToRight布局,具有大尺寸和自由移动

属性说明

batchSize : int

    如果layoutMode设置为Batched,则此属性保存每个批次中布局的项目数量,默认值是100。
访问函数:
int batchSize() const
void setBatchSize(int batchSize)

flow : Flow

    此属性表示项布局的方向。如果此属性为LeftToRight,则项将从左向右布局。如果iswrapped属性为true,布局将在到达可见区域的右侧时自动换行。如果此属性为TopToBottom,则项目将从可见区域的顶部布局,并在到达底部时进行包装。当视图可见时设置此属性将导致重新布局项。默认情况下,此属性设置为TopToBottom。
访问函数:
QListView::Flow flow() const
void setFlow(QListView::Flow flow)
参见viewMode.

gridSize : QSize

    此属性保存布局网格的大小。该属性是项所在的网格的大小。默认是一个空的大小,这意味着没有网格,布局不是在网格中完成的。将此属性设置为非空大小将打开网格布局。(当网格布局生效时,spacing属性将被忽略。)当视图可见时设置此属性将导致重新布局项。
访问函数:
QSize gridSize() const
void setGridSize(const QSize &size)
参见viewMode.

isWrapping : bool

    此属性表示项布局是否应该换行。此属性表示当可见区域中没有更多空间时,布局是否应自动换行。布局换行的位置取决于flow属性。当视图可见时设置此属性将导致重新布局项。默认情况下,此属性为false。
访问函数:
bool isWrapping() const
void setWrapping(bool enable)
参见viewMode.

itemAlignment : Qt::Alignment

    此属性保存其单元格中每个项的对齐方式。这只在ListMode中支持TopToBottom流和启用了换行。默认对齐方式为0,这意味着项将完全填充其单元格。
访问函数:
Qt::Alignment itemAlignment() const
void setItemAlignment(Qt::Alignment alignment)

layoutMode : LayoutMode

    确定项的布局是立即进行还是延迟进行。此属性保存项的布局模式。当模式是SinglePass(默认)时,所有的项目都是一次性布置的。当模式为Batched时,在处理事件时,项目以batchSize项目的批次进行布局。这使得它可以即时查看和交互可见的项目,而其余的是布局。
访问函数:
QListView::LayoutMode layoutMode() const
void setLayoutMode(QListView::LayoutMode mode)

参见viewMode.

modelColumn : int

    此属性保存模型中可见的列默认情况下,此属性包含0,表示将显示模型中的第一列。
访问函数:
int modelColumn() const
void setModelColumn(int column)

movement : Movement

    这个属性决定了项目是否可以自由移动,是否被固定到网格上,或者根本不能移动。
    此属性确定用户如何移动视图中的项。静态意味着条目不能被用户移动。自由意味着用户可以将项目拖放到视图中的任何位置。Snap意味着用户可以拖放项目,但只能拖放到gridSize属性指定的概念网格中的位置。当视图可见时设置此属性将导致重新布局项。默认情况下,此属性设置为Static。
访问函数:
QListView::Movement movement() const
void setMovement(QListView::Movement movement)
参见gridSize, resizeMode, and viewMode.

resizeMode : ResizeMode

    此属性用于在视图调整大小时是否重新布局项。如果此属性为Adjust,则在调整视图大小时将重新布局项目。如果该值为Fixed,则在调整视图大小时不会布局项。默认情况下,此属性设置为Fixed。
访问函数:
QListView::ResizeMode resizeMode() const
void setResizeMode(QListView::ResizeMode mode)
参见 movement, gridSize, and viewMode.

selectionRectVisible : bool

    如果选择矩形应该是可见的如果此属性为真,则选择矩形是可见的;否则就会被隐藏起来。
    注意:只有当选择模式为可选择多个项目的模式时,选择矩形才会显示;也就是说,如果选择模式是QAbstractItemView:: singlesselection,它将不会绘制一个选择矩形。默认情况下,此属性为false。
访问函数:
bool isSelectionRectVisible() const
void setSelectionRectVisible(bool show)

spacing : int

    此属性保留布局中项周围的空间。此属性是布局中填充项周围的空白空间的大小。当视图可见时设置此属性将导致重新布局项。默认情况下,此属性的值为0。
访问函数:
int spacing() const
void setSpacing(int space)
参见viewMode.

uniformItemSizes : bool

    此属性用于确定列表视图中的所有项是否具有相同的大小。只有在保证视图中的所有项具有相同大小时,才应将此属性设置为true。这使视图能够出于性能目的进行一些优化。默认情况下,此属性为false。
访问函数:
bool uniformItemSizes() const
void setUniformItemSizes(bool enable)

viewMode : ViewMode

    这个属性保存QListView的视图模式。此属性将更改其他未设置属性以符合设置视图模式。除非clearPropertyFlags()被调用,否则已经被设置的特定于qlistview的属性将不会被改变。
    设置视图模式将根据选定的移动启用或禁用拖放功能。对于ListMode,默认的移动是Static(禁止拖放);对于IconMode,默认的移动是Free(启用拖放)。
访问函数:
QListView::ViewMode viewMode() const
void setViewMode(QListView::ViewMode mode)
参见isWrapping, spacing, gridSize, flow, movement, and resizeMode.

wordWrap : bool

    项文本换行策略。如果此属性为true,则项目文本在必要的换行处换行;否则,它根本不换行。默认情况下,此属性为false。请注意,即使启用了换行,也不会展开单元格来为文本腾出空间。根据视图的textElideMode,它将打印无法显示的文本的省略号。
访问函数:
bool wordWrap() const
void setWordWrap(bool on)

成员函数说明

QListView::QListView(QWidget *parent = nullptr)

    用给定的父类创建一个新的QListView来查看模型。使用setModel()来设置模型。

[signal] void QListView::indexesMoved(const QModelIndexList &indexes)

    当指定的索引在视图中移动时发出此信号。

[virtual] QListView::~QListView()

销毁视图。

void QListView::clearPropertyFlags()

    清除特定于qlistview的属性标志。看到viewMode。从QAbstractItemView继承的属性不被属性标志所覆盖。具体来说,当QListView调用setMovement()或setViewMode()时,dragEnabled和acceptsDrops是由QListView计算的。

[override virtual protected] void QListView::currentChanged(const QModelIndex &current, const QModelIndex &previous)

重新实现: QAbstractItemView::currentChanged(const QModelIndex &current, const QModelIndex &previous).

[override virtual protected] void QListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector())

重新实现:QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles).

[override virtual protected] void QListView::dragLeaveEvent(QDragLeaveEvent *e)

重新实现:QAbstractItemView::dragLeaveEvent(QDragLeaveEvent *event).

[override virtual protected] void QListView::dragMoveEvent(QDragMoveEvent *e)

重新实现:QAbstractItemView::dragMoveEvent(QDragMoveEvent *event).

[override virtual protected] void QListView::dropEvent(QDropEvent *e)

重新实现: QAbstractItemView::dropEvent(QDropEvent *event).

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

重新实现:QAbstractItemView::event(QEvent *event).

[override virtual protected] int QListView::horizontalOffset() const

重新实现:QAbstractItemView::horizontalOffset() const.

[override virtual] QModelIndex QListView::indexAt(const QPoint &p) const

重新实现: QAbstractItemView::indexAt(const QPoint &point) const.

[override virtual protected] bool QListView::isIndexHidden(const QModelIndex &index) const

重新实现: QAbstractItemView::isIndexHidden(const QModelIndex &index) const.

bool QListView::isRowHidden(int row) const

如果行是隐藏的,则返回true;否则返回false。

[override virtual protected] void QListView::mouseMoveEvent(QMouseEvent *e)

重新实现:QAbstractItemView::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QListView::mouseReleaseEvent(QMouseEvent *e)

重新实现:QAbstractItemView::mouseReleaseEvent(QMouseEvent *event).

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

重新实现: QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers).

[override virtual protected] void QListView::paintEvent(QPaintEvent *e)

重新实现:QAbstractScrollArea::paintEvent(QPaintEvent *event).

[protected] QRect QListView::rectForIndex(const QModelIndex &index) const

    返回项目在模型中位置索引处的矩形。矩形在内容坐标中。
参见 visualRect().

[override virtual protected] void QListView::resizeEvent(QResizeEvent *e)

重新实现: QAbstractItemView::resizeEvent(QResizeEvent *event).

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

重新实现:QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end).

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

重新实现: QAbstractItemView::rowsInserted(const QModelIndex &parent, int start, int end).

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

重新实现: QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint).

[override virtual protected] QModelIndexList QListView::selectedIndexes() const

重新实现:QAbstractItemView::selectedIndexes() const.

[override virtual protected] void QListView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

重新实现: QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected).

[protected] void QListView::setPositionForIndex(const QPoint &position, const QModelIndex &index)

    将模型中索引项的内容位置设置为给定位置。如果列表视图的移动模式是Static或者视图模式是ListView,这个函数将不起作用。

void QListView::setRowHidden(int row, bool hide)

    如果hide为true,则给定的行将被隐藏;否则将显示该行。
参见 isRowHidden().

[override virtual protected] void QListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command)

重新实现:QAbstractItemView::setSelection(const QRect &rect,,QItemSelectionModel::SelectionFlags flags).

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

重新实现: QAbstractItemView::startDrag(Qt::DropActions supportedActions).

[override virtual protected] void QListView::timerEvent(QTimerEvent *e)

重新实现:QAbstractItemView::timerEvent(QTimerEvent *event).

[override virtual protected] void QListView::updateGeometries()

重新实现: QAbstractItemView::updateGeometries().

[override virtual protected] int QListView::verticalOffset() const

重新实现:QAbstractItemView::verticalOffset() const.

[override virtual protected] QStyleOptionViewItem QListView::viewOptions() const

重新实现:QAbstractItemView::viewOptions() const.

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

重新实现:QAbstractItemView::viewportSizeHint() const.

[override virtual] QRect QListView::visualRect(const QModelIndex &index) const

重新实现:QAbstractItemView::visualRect(const QModelIndex &index) const.

[override virtual protected] QRegion QListView::visualRegionForSelection(const QItemSelection &selection) const

重新实现: QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const。
从4.7开始,返回的区域只包含与视窗相交(或包含在)的矩形。

[override virtual protected] void QListView::wheelEvent(QWheelEvent *e)

重新实现:QAbstractScrollArea::wheelEvent(QWheelEvent *e)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值