简介
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::LeftToRight | 0 | 项从左到右排列在视图中 |
QListView::TopToBottom | 1 | 项从上到下排列在视图中 |
enum QListView::LayoutMode
枚举值 | 值 | 描述 |
---|---|---|
QListView::SinglePass | 0 | 一次展示所有项The items are laid out all at once. |
QListView::Batched | 1 | 以项的batchSize批量展示项 |
参见 batchSize.
enum QListView::Movement
枚举值 | 值 | 描述 |
---|---|---|
QListView::Static | 0 | 用户不能移动项 |
QListView::Free | 1 | 用户可以自由移动项 |
QListView::Snap | 2 | 在移动时,项会与指定的网格对齐;查看setGridSize() |
enum QListView::ResizeMode
枚举值 | 值 | 描述 |
---|---|---|
QListView::Fixed | 0 | 项只会在视图第一次显示时进行布局 |
QListView::Adjust | 1 | 每次调整视图大小时,项都将被重新布局 |
enum QListView::ViewMode
枚举值 | 值 | 描述 |
---|---|---|
QListView::ListMode | 0 | 项使用TopToBottom进行布局,具有小尺寸和静态移动 |
QListView::IconMode | 1 | 项使用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 ¤t, const QModelIndex &previous)
重新实现: QAbstractItemView::currentChanged(const QModelIndex ¤t, 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)。