模型视图(14):【类】QListView[官翻]
作者:互联网
文章目录
QListView 类
QListView类提供了模型的列表或图标视图。
Header: | #include < QListView > |
---|---|
qmake: | QT += widgets |
Inherits: | QAbstractItemView |
Inherited By: | QListWidget and QUndoView |
详述
QListView显示存储在模型中的项,可以是一个简单的非层次列表,也可以是一个图标集合。这个类用于提供以前由QListBox和QIconView类提供的列表和图标视图,但是使用了Qt的模型/视图体系结构提供的更灵活的方法。
QListView类是模型/视图类之一,是Qt的模型/视图框架的一部分。
此视图不显示水平或垂直标题;要使用水平标题显示项目列表,请使用QTreeView。
QListView实现了QAbstractItemView类定义的接口,允许它显示由QAbstractItemModel类派生的模型提供的数据。
列表视图中的项目可以使用两种视图模式之一来显示:在ListMode中,项目以简单列表的形式显示;在IconMode中,列表视图采用图标视图的形式,其中项目用文件管理器中的文件之类的图标显示。默认情况下,列表视图处于ListMode。要更改视图模式,请使用setViewMode()函数,要确定当前的视图模式,请使用viewMode()。
这些视图中的项按照列表视图的flow()指定的方向排列。根据视图的movement()状态,项目可以固定在适当的位置,也可以允许移动。
如果模型中的项不能完全按照流的方向排列,则可以在视图小部件的边界处进行包装;这取决于isWrapping()。当项目由图标视图表示时,此属性非常有用。
resizeMode()和layoutMode()控制项目的布局方式和时间。项目的间距取决于它们的间距(),并且可以存在于由gridSize()指定的概念网格中。根据iconSize(),这些项可以显示为大图标或小图标。
提高性能
在显示大量项时,可以为视图提供有关它正在处理的数据的提示,以提高其性能。对于想要显示大小相同的项的视图,可以采取的一种方法是将uniformitemsize属性设置为true。
公共类型
enum Flow
Constant | Value | Description |
---|---|---|
LeftToRight | 0 | 项目在视图中从左到右排列。 |
TopToBottom | 1 | 项目在视图中从上到下排列。 |
enum LayoutMode
Constant | Value | Description |
---|---|---|
SinglePass | 0 | 这些项目一下子就列出来了。 |
Batched | 1 | 这些项目是按批量大小分批排列的。 |
enum Movement
Constant | Value | Description |
---|---|---|
Static | 0 | 项目不能由用户移动。 |
Free | 1 | 项目可以由用户自由移动。 |
Snap | 2 | 项目在移动时吸附到指定的网格;看到setGridSize()。 |
enum ResizeMode
Constant | Value | Description |
---|---|---|
Fixed | 0 | 项目将只在第一次显示视图时进行布局。 |
Adjust | 1 | 每当视图调整大小时,这些项将被布局。 |
enum ViewMode
Constant | Value | Description |
---|---|---|
ListMode | 0 | 项目是安排使用TopToBottom flow,具有小的尺寸和静态运动 |
IconMode | 1 | 项目的布局使用左向流动,大尺寸和自由移动 |
属性
-
batchSize: int 如果将layoutMode设置为批处理,则此属性保存在每个批处理中布局的项数
默认值是100。 -
flow: Flow 此属性保存项布局应向哪个方向流动
如果该属性是left ttoright,则项目将从左到右排列。如果iswrap属性为真,布局将在到达可见区域的右侧时自动换行。如果此属性为TopToBottom,则项目将从可见区域的顶部展开,到达底部时进行换行。在视图可见时设置此属性将导致项目再次布局。
默认情况下,该属性被设置为TopToBottom。
-
gridSize: QSize 此属性保存布局网格的大小
此属性表示项目所在网格的大小。默认大小为空,这意味着没有网格,布局不是在网格中完成的。将此属性设置为网格布局上的非空大小开关。(当网格布局生效时,间距属性被忽略。)
在视图可见时设置此属性将导致项目再次布局。
-
isWrapping: bool 此属性保存项目布局是否应换行
此属性用于在可见区域没有更多空间时布局是否应该换行。布局包装的位置取决于flow属性。
在视图可见时设置此属性将导致项目再次布局。
默认情况下,此属性为false。
-
itemAlignment: Qt::Alignment 此属性保存其单元格中每个项的对齐方式
这只支持在列表模式TopToBottom流和包装启用。默认对齐为0,这意味着一个项完全填充它的单元格。 -
layoutMode: LayoutMode 确定项的布局应该立即发生还是延迟, 此属性保存项的布局模式
当模式为SinglePass(默认值)时,所有项目都被一次性列出。当对模式进行批处理时,在处理事件时,项目将以批处理的方式排列。这使得它能够在其他可视项目被布局时立即查看并与之交互。 -
modelColumn: int 此属性保存模型中可见的列
默认情况下,此属性包含0,表示将显示模型中的第一列。 -
movement: Movement 此属性决定用户如何在视图中移动项目
无论项目是可以自由移动、锁定到网格中,还是根本不能移动,这个属性都有效。
Static意味着项目不能在用户中移动。Free意味着用户可以将项目拖放到视图中的任何位置。Snap意味着用户可以拖放项目,但只能拖放到gridSize属性所表示的概念性网格中的位置。
在视图可见时设置此属性将导致项目再次布局。
默认情况下,此属性设置为Static。 -
resizeMode: ResizeMode 此属性保存在视图调整大小时项目是否再次布局
如果此属性是调整的,则在视图调整大小时,这些项将再次布局。如果该值是固定的,则在调整视图大小时将不会布局这些项。
默认情况下,此属性设置为固定。 -
selectionRectVisible: bool 选择矩形是否可见
注意:只有当选择模式处于可选择多个项目的模式时,选择矩形才会显示;例如,如果选择模式是QAbstractItemView::SingleSelection,它将不会绘制一个选择矩形。
默认情况下,此属性为false。 -
spacing: int 此属性保存布局中项周围的空间
此属性是布局中在项周围填充的空白空间的大小。
在视图可见时设置此属性将导致项目再次布局。
默认情况下,此属性的值为0。 -
uniformItemSizes: bool 这个属性包含列表视图中的所有项目是否具有相同的大小
只有在确保视图中的所有项具有相同的大小时,才应该将此属性设置为true。这使视图能够进行一些性能优化。
默认情况下,此属性为false 。 -
viewMode: ViewMode 此属性保存QListView的视图模式
此属性将更改其他未设置属性,以符合set视图模式。已经设置的特定于qlistview的属性不会被更改,除非调用了clearPropertyFlags()。
设置视图模式将根据选中的移动启用或禁用拖放。对于ListMode,默认的移动是静态的(禁用拖放);对于IconMode,默认的移动是自由的(支持拖放)。 -
wordWrap: bool 此属性保存项目文本换行策略
如果该属性为true,则在需要换行的地方对条目文本进行换行;否则就根本不包装。默认情况下,此属性为false。
请注意,即使启用了换行,单元格也不会展开来为文本腾出空间。根据视图的textElideMode,它将为不能显示的文本打印省略号。
公共函数
构造析构
- QListView(QWidget *parent = nullptr)
- virtual ~QListView()
属性
-
void clearPropertyFlags() 清除特定于QListView的属性标志。参见viewMode。
属性标志不覆盖从QAbstractItemView继承的属性。具体来说,dragEnabled和acceptsdrop是QListView在调用setMovement()或setViewMode()时计算出来的。 -
QListView::Flow flow() const
-
void setFlow(QListView::Flow flow)
-
QSize gridSize() const
-
void setGridSize(const QSize &size)
-
bool isRowHidden(int row) const
-
void setRowHidden(int row, bool hide)
-
bool isSelectionRectVisible() const
-
void setSelectionRectVisible(bool show)
-
Qt::Alignment itemAlignment() const
-
void setItemAlignment(Qt::Alignment alignment)
-
QListView::LayoutMode layoutMode() const
-
void setLayoutMode(QListView::LayoutMode mode)
-
int modelColumn() const
-
void setModelColumn(int column)
-
QListView::Movement movement() const
-
void setMovement(QListView::Movement movement)
-
QListView::ResizeMode resizeMode() const
-
void setResizeMode(QListView::ResizeMode mode)
-
int spacing() const
-
void setSpacing(int space)
-
bool uniformItemSizes() const
-
void setUniformItemSizes(bool enable)
-
QListView::ViewMode viewMode() const
-
void setViewMode(QListView::ViewMode mode) 此属性保存QListView的查看模式
此属性将更改其他未设置的属性以符合设置的视图模式。 除非已调用clearPropertyFlags() ,否则不会更改已设置的特定于QListView的属性。
设置查看模式将根据所选移动启用或禁用拖放。 对于ListMode,默认移动为“静态”(禁用拖放); 对于IconMode,默认移动为Free(启用拖放)。
-
bool isWrapping() const
-
void setWrapping(bool enable)
-
bool wordWrap() const
-
void setWordWrap(bool on)
重新实现的公共函数
- virtual QModelIndex indexAt(const QPoint &p) const override
- virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) 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 QVector &roles = QVector()) override
- virtual void dragLeaveEvent(QDragLeaveEvent *e) override
- virtual void dragMoveEvent(QDragMoveEvent *e) override
- virtual void dropEvent(QDropEvent *e) override
- virtual bool event(QEvent *e) override
- virtual int horizontalOffset() 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 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 QStyleOptionViewItem viewOptions() const override
- virtual QSize viewportSizeHint() const override
- virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override
- virtual void wheelEvent(QWheelEvent *e) override
示例
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStringListModel mode(QStringList() << "1" << "2" << "3");
QListView view;
view.setModel(&mode);
view.setGridSize(QSize(100,30));
view.setMovement(QListView::Free);
view.setSelectionRectVisible(true);
view.setDragDropMode(QListView::InternalMove);
view.setFlow(QListView::LeftToRight);
view.setItemAlignment(Qt::AlignRight);
view.show();
return a.exec();
}
参见
- View Classes
- Item Views Puzzle Example
- QTreeView
- QTableView
- QListWidget
标签:QListView,const,void,视图,官翻,overridevirtual,属性 来源: https://blog.csdn.net/hitzsf/article/details/111874281