QListView 类
QListView 类提供了一个对模型的列表或图标视图。 更多...
头文件 | #include <QListView> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承自 | QAbstractItemView |
派生自 |
公共类型
枚举 | Flow { 从左到右,从上到下 } |
枚举 | LayoutMode { 单次遍历,批量处理 } |
枚举 | Movement { 静态,自由,吸附 } |
枚举 | ResizeMode { 固定,调整 } |
枚举 | ViewMode { 列表模式,图标模式 } |
属性
|
|
公共函数
QListView(QWidget *parent = nullptr) | |
virtual | ~QListView() |
int | batchSize() const |
void | clearPropertyFlags() |
QListView::Flow | flow() const |
QSize | gridSize() const |
bool | isRowHidden(int row) const |
bool | isSelectionRectVisible() const |
bool | isWrapping() const |
Qt::Alignment | itemAlignment() const |
QListView::LayoutMode | layoutMode() const |
int | modelColumn() const |
QListView::Movement | movement() const |
QListView::ResizeMode | resizeMode() const |
void | setBatchSize(int batchSize) |
void | setFlow(QListView::Flow flow) |
void | setGridSize(const QSize &size) |
void | setItemAlignment(Qt::Alignment alignment) |
void | setLayoutMode(QListView::LayoutMode mode) |
void | setModelColumn(int column) |
void | setMovement(QListView::Movement movement) |
void | setResizeMode(QListView::ResizeMode mode) |
void | setRowHidden(int row, bool hide) |
void | setSelectionRectVisible(bool show) |
void | setSpacing(int space) |
void | setUniformItemSizes(bool enable) |
void | setViewMode(QListView::ViewMode mode) |
void | setWordWrap(bool on) |
void | setWrapping(bool enable) |
int | spacing() const |
bool | uniformItemSizes() const |
QListView::ViewMode | viewMode() const |
bool | wordWrap() const |
重写的公共函数
virtual QModelIndex | indexAt(const QPoint &p) const override |
virtual void | scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) override |
virtual void | setRootIndex(const QModelIndex &index) override |
virtual QRect | visualRect(const QModelIndex &index) const override |
信号
void | indexesMoved(const QModelIndexList &indexes) |
受保护的函数
QRect | rectForIndex(const QModelIndex &index) const |
void | setPositionForIndex(const QPoint &position, const QModelIndex &index) |
重写的受保护函数
virtual void | currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override |
virtual void | dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>()) override |
virtual void | dragLeaveEvent(QDragLeaveEvent *e) override |
virtual void | dragMoveEvent(QDragMoveEvent *e) override |
virtual void | dropEvent(QDropEvent *event) override |
virtual bool | event(QEvent *e) override |
virtual int | horizontalOffset() const override |
virtual void | initViewItemOption(QStyleOptionViewItem *option) const override |
virtual bool | isIndexHidden(const QModelIndex &index) const override |
virtual void | mouseMoveEvent(QMouseEvent *e) override |
virtual void | mouseReleaseEvent(QMouseEvent *e) override |
virtual QModelIndex | moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override |
virtual void | paintEvent(QPaintEvent *e) override |
virtual void | resizeEvent(QResizeEvent *e) override |
virtual void | rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override |
virtual void | rowsInserted(const QModelIndex &parent, int start, int end) override |
virtual void | scrollContentsBy(int dx, int dy) override |
virtual QModelIndexList | selectedIndexes() const override |
virtual void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override |
virtual void | setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override |
virtual void | startDrag(Qt::DropActions supportedActions) override |
virtual void | timerEvent(QTimerEvent *e) override |
virtual void | updateGeometries() override |
virtual int | verticalOffset() const override |
virtual QSize | viewportSizeHint() const override |
virtual QRegion | visualRegionForSelection(const QItemSelection &selection) const override |
virtual void | wheelEvent(QWheelEvent *e) override |
详细描述
A QListView显示存储在模型中的项,可以是简单的非层次列表,或是一组图标。此类用于提供以前由QListBox和QIconView类提供的列表和图标视图,但使用了Qt的模型/视图架构提供的更灵活的方法。
QListView类是模型/视图类之一,也是Qt的模型/视图框架的一部分。
此视图不显示水平和垂直表头;要显示具有水平表头的项目列表,请使用QTreeView以替代。
QListView实现了QAbstractItemView类定义的接口,允许它显示由QAbstractItemModel类派生的模型提供的数据。
列表视图中的项可以使用两种视图模式之一显示:在ListMode中,项以简单列表的形式显示;在IconMode中,列表视图采用图标视图的形式,其中项以类似文件管理器中文件的方式显示图标。默认情况下,列表视图处于ListMode。要更改视图模式,请使用setViewMode()函数,并使用viewMode()确定当前视图模式。
这些视图中的项按列表视图的flow()指定的方向排列。项可以固定在位置,也可以根据视图的movement()状态允许移动。
如果模型中的项不能完全按流的方向排列,则它们可以在视图小部件的边界处换行;这取决于isWrapping。此属性在项以图标视图表示时很有用。
函数resizeMode() 和函数layoutMode() 控制了项目布局的方式和时间。项目间距根据其spacing() 属性进行设置,并且可以存在于一个由 gridSize() 指定的大小的理想网格中。项目的绘制大小取决于其 iconSize() 属性。
性能提升
可以提供有关视图所处理数据的提示,以提高其显示大量项目时的性能。对于旨在显示具有相同大小的项目的视图,可以采用的方法是将 uniformItemSizes 属性设置为 true。
另请参阅视图类、QTreeView、QTableView 和 QListWidget。
成员类型文档
枚举 QListView::Flow
常量 | 值 | 描述 |
---|---|---|
QListView::LeftToRight | 0 | 项目从左侧到右侧在该视图中布局。 |
QListView::TopToBottom | 1 | 项目从顶部到底部在该视图中布局。 |
枚举 QListView::LayoutMode
常量 | 值 | 描述 |
---|---|---|
QListView::SinglePass | 0 | 同时布局所有的项目。 |
QListView::Batched | 1 | 以大小为 batchSize 的批次进行布局项目。 |
另请参阅batchSize。
枚举 QListView::Movement
常量 | 值 | 描述 |
---|---|---|
QListView::Static | 0 | 用户不能移动项目。 |
QListView::Free | 1 | 用户可以自由地移动项目。 |
QListView::Snap | 2 | 移动项目时,项目将贴合指定的网格;请参阅 setGridSize(). |
枚举 QListView::ResizeMode
常量 | 值 | 描述 |
---|---|---|
QListView::Fixed | 0 | 项目仅在视图首次显示时进行布局。 |
QListView::Adjust | 1 | 每次调整视图大小时,都会进行布局。 |
枚举 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,则项目将以从左到右的顺序排列。如果isWrapping属性值为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) |
运动 : 运动
此属性决定项目是否可以自由移动,是吸附到网格,还是完全不能移动。
此属性决定了用户如何在视图中移动项目。 静态 表示用户不能移动项目。 自由 表示用户可以将项目拖放到视图中的任何位置。 吸附 表示用户可以拖放项目,但只能拖放到一个虚拟网格的指定位置,该网格由 gridSize 属性表示。
当视图可见时设置此属性将导致项目重新排列。
默认情况下,此属性设置为 静态。
访问函数
QListView::Movement | 运动() const |
void | setMovement(QListView::Movement 运动) |
另请参阅 gridSize、resizeMode 和 viewMode。
resizeMode : 调整模式
此属性确定在调整视图大小后是否重新布局项目。
如果此属性为 调整,则在调整视图大小时将重新布局项目。如果值为 固定,则在调整视图大小时不会重新布局项目。
默认情况下,此属性设置为 固定。
访问函数
QListView::ResizeMode | resizeMode() const |
void | setResizeMode(QListView::ResizeMode 模式) |
另请参阅 movement、gridSize 和 viewMode。
selectionRectVisible : 布尔值
是否应显示选择矩形
如果此属性为 true
,则选择矩形可见;否则将被隐藏。
注意:只有当选择模式允许选择多个项目时,选择矩形才会可见;即如果选择模式是 QAbstractItemView::SingleSelection,则不会绘制选择矩形。
默认情况下,此属性为false
。
访问函数
bool | isSelectionRectVisible() const |
void | setSelectionRectVisible(bool show) |
spacing : 整数
此属性保持布局中项目周围的空白空间。
此属性是在布局中围绕项目填充的空白空间的尺寸。
当视图可见时设置此属性将导致项目重新排列。
默认情况下,此属性包含的值为 0。
访问函数
int | spacing() const |
void | setSpacing(int 间隔) |
另请参阅viewMode。
uniformItemSizes : 布尔值
此属性保持列表视图中所有项目是否具有相同的大小。
如果可以保证视图中的所有项目都具有相同的大小,则应仅将此属性设置为 true。这可以使得视图在性能方面进行一些优化。
默认情况下,此属性为false
。
访问函数
bool | uniformItemSizes() const |
void | setUniformItemSizes(bool enable) |
viewMode : 视图模式
此属性保持 QListView 的视图模式。
此属性将更改其他未设置的属性以符合已设置的视图模式。已设置的QListView特定属性将不会更改,除非已调用clearPropertyFlags()。
设置视图模式将根据所选移动启用或禁用拖放。对于ListMode,默认移动是Static(禁用拖放);对于IconMode,默认移动是Free(启用拖放)。
访问函数
QListView::ViewMode | viewMode() const |
void | setViewMode(QListView::ViewMode mode) |
另请参阅 isWrapping、spacing、gridSize、flow、movement和resizeMode。
wordWrap : bool
此属性包含项文本换行策略
如果此属性为true
,则项文本将在必要的单词断点处换行;否则,根本不进行换行。默认情况下,此属性为false
。
请注意,即使启用了换行,单元格也不会扩展以容纳文本。如果文本无法显示,它将根据视图的textElideMode打印省略号。
访问函数
bool | wordWrap() const |
void | setWordWrap(bool on) |
成员函数文档
[显式]
QListView::QListView(QWidget *parent = nullptr)
创建一个新的QListView,用于查看一个模型。使用setModel()设置模型。
[虚,无弱异常抛出]
QListView::~QListView()
销毁视图。
void QListView::clearPropertyFlags()
从QAbstractItemView继承的属性不受属性标志的影响。具体来说,dragEnabled和acceptsDrops是由QListView在调用setMovement()或setViewMode时计算的。
[覆盖虚受保护]
void QListView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
重新实现:QAbstractItemView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)。
[覆盖虚受保护]
void QListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())
重新实现:QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles)。
[覆盖虚保护]
void QListView::dragLeaveEvent(QDragLeaveEvent *e)
重新实现: QAbstractItemView::dragLeaveEvent(QDragLeaveEvent *event).
[覆盖虚保护]
void QListView::dragMoveEvent(QDragMoveEvent *e)
重新实现: QAbstractItemView::dragMoveEvent(QDragMoveEvent *event).
[覆盖虚保护]
void QListView::dropEvent(QDropEvent *event)
重新实现: QAbstractItemView::dropEvent(QDropEvent *event).
[覆盖虚保护]
bool QListView::event(QEvent *e)
重新实现: QAbstractItemView::event(QEvent *event).
[覆盖虚保护]
int QListView::horizontalOffset() const
重新实现: QAbstractItemView::horizontalOffset() const.
[覆盖虚]
QModelIndex QListView::indexAt(const QPoint &p) const
重新实现: QAbstractItemView::indexAt(const QPoint &point) const.
[信号]
void QListView::indexesMoved(const QModelIndexList &indexes)
该信号在指定的 indexes 在视图中移动时发出。
[覆盖虚保护]
void QListView::initViewItemOption(QStyleOptionViewItem *option) const
重新实现: QAbstractItemView::initViewItemOption(QStyleOptionViewItem *option) const.
[覆盖虚保护]
bool QListView::isIndexHidden(const QModelIndex &index) const
重新实现: QAbstractItemView::isIndexHidden(const QModelIndex &index) const.
bool QListView::isRowHidden(int row) const
如果指定的 row 被隐藏,则返回 true
;否则返回 false
。
[覆盖虚保护]
void QListView::mouseMoveEvent(QMouseEvent *e)
重新实现: QAbstractItemView::mouseMoveEvent(QMouseEvent *event).
[重写虚拟受保护]
void QListView::mouseReleaseEvent(QMouseEvent *e)
重实现: QAbstractItemView::mouseReleaseEvent(QMouseEvent *event).
[重写虚拟受保护]
QModelIndex QListView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
重实现: QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers).
[重写虚拟受保护]
void QListView::paintEvent(QPaintEvent *e)
重实现: QAbstractScrollArea::paintEvent(QPaintEvent *event).
[受保护]
QRect QListView::rectForIndex(const QModelIndex &index) const
返回模型中位置在 index 处的项的矩形。矩形位于内容坐标。
另请参阅 visualRect().
[重写虚拟受保护]
void QListView::resizeEvent(QResizeEvent *e)
重实现: QAbstractItemView::resizeEvent(QResizeEvent *event).
[重写虚拟受保护]
void QListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
重实现: QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end).
[重写虚拟受保护]
void QListView::rowsInserted(const QModelIndex &parent, int start, int end)
重实现: QAbstractItemView::rowsInserted(const QModelIndex &parent, int start, int end).
[重写虚拟受保护]
void QListView::scrollContentsBy(int dx, int dy)
重实现: QAbstractScrollArea::scrollContentsBy(int dx, int dy).
通过 dx 和 dy 滚动视图内容。
[重写虚拟]
void QListView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible)
重实现: QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint).
[重写虚拟受保护]
QModelIndexList QListView::selectedIndexes() const
重实现: QAbstractItemView::selectedIndexes() const.
[覆盖虚保护]
void QListView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
重实现: QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected).
[保护]
void QListView::setPositionForIndex(const QPoint &position, const QModelIndex &index)
将模型中索引为 index 的项的内容位置设置为给定的 position。如果列表视图的运动模式是静态或其视图模式是 ListView,则此函数将不起作用。
[覆盖虚]
void QListView::setRootIndex(const QModelIndex &index)
重实现: QAbstractItemView::setRootIndex(const QModelIndex &index).
void QListView::setRowHidden(int row, bool hide)
如果 hide 为真,则将隐藏指定的 row;否则将显示 row。
另请参阅isRowHidden。
[覆盖虚保护]
void QListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command)
重实现: QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags).
[覆盖虚保护]
void QListView::startDrag(Qt::DropActions supportedActions)
重实现: QAbstractItemView::startDrag(Qt::DropActions supportedActions).
[覆盖虚保护]
void QListView::timerEvent(QTimerEvent *e)
重实现: QAbstractItemView::timerEvent(QTimerEvent *event).
[覆盖虚保护]
void QListView::updateGeometries()
重实现: QAbstractItemView::updateGeometries().
[覆盖虚保护]
int QListView::verticalOffset() const
重实现: QAbstractItemView::verticalOffset() const.
[覆盖虚保护]
QSize QListView::viewportSizeHint() const
重实现: QAbstractItemView::viewportSizeHint() const.
[覆盖虚函数]
QRect QListView::visualRect(const QModelIndex &index) const
重写: QAbstractItemView::visualRect(const QModelIndex &index) const.
[覆盖虚保护]
QRegion QListView::visualRegionForSelection(const QItemSelection &selection) const
重写: QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const.
自4.7版起,返回的区域仅包含与视口相交的矩形(或包含在视口内)。
[覆盖虚保护]
void QListView::wheelEvent(QWheelEvent *e)
重写: QAbstractScrollArea::wheelEvent(QWheelEvent *e).
© 2024 Qt公司有限公司。本文档中包含的贡献是各自所有者的版权所有。本提供的文档根据自由软件基金会发布的自由文档许可证版本1.3的条款进行许可。Qt及其相应标志是芬兰和/或世界其他国家的Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。