一、概述

QListView是从QAbstractItemView 派生的类,实现了QAbstractItemView类定义的接口 ,是Model/View架构中的视图类之一,是Qt模型/视图框架的一部分,提供基于模型的的列表模式或图标模式视图。

QListView将存储在模型中的项显示为简单的没有父子层次的列表或图标集合,视图不显示水平或垂直标题,若要显示具有水平标题的项目列表,需要改用QTreeView或QTableView。

二、QListView相关的属性

QListView对应部件在Qt Designer的Item Views(Model-Based)部件栏中的List View部件,在Designer中可设置的属性包括batchSize、flow、gridSize、isWrapping、layoutMode、modelColumn、movement、resizeMode、selectionRectVisible、spacing、uniformItemSizes、viewMode、wordWrap十三项。

2.1、layoutMode属性和batchSize属性

layoutMode属性和batchSize属性用于控制视图中数据加载过程中是立即展示还是按批展示。

2.1.1、batchSize属性

该属性是在layoutMode属性设置为Batched时,用于控制每个批量的数量,缺省值为100,可以通过方法batchSize()、setBatchSize(int batchSize)来进行访问或设置。

2.1.2、layoutMode属性

QListView的layoutMode属性用于控制视图中数据项的排列是立即进行还是延迟进行。对应类型为枚举类型QListView.LayoutMode,其取值及含义如下:

  • SinglePass:值为0,视图中的项立即排列
  • Batched:值为1,表示视图中的数据项在事件处理时是按批来进行排列展示,具体每批的项数量由属性batchSize定义。这样就可以在剩余数据项项目被按批次排列的同时,立即查看已经排列好的可见项目并与之交互。

layoutMode属性可以通过方法layoutMode()、setLayoutMode(LayoutMode mode) 来访问或设置layoutMode属性。

2.2、flow属性

QListView的flow属性用于控制视图中的数据排列方向,其类型为枚举类型QListView.Flow,相关取值及含义如下:

  • LeftToRight:取值为0,表示数据项从左至右排列

  • TopToBottom:取值为1,表示数据项从上至下排列

该属性默认是TopToBottom,可以通过方法flow() 、setFlow(Flow flow)访问该属性。

注意:

在视图已经可见的情况下,设置该属性的值会导致视图中的数据项重新排列。

2.3、gridSize属性

QListView的gridSize属性用于控制视图中数据项排列所在网格的大小,gridSize默认值是空,这意味着没有网格,数据项的排列不是按网格安排。将此属性设置为非空大小将开启网格布局。

在视图可见情况下设置此属性将会导致视图中的数据项重新排列,在数据量较多的情况下会带来较大的开销。

可以使用gridSize()、setGridSize(const QSize size)来访问或设置该属性。

注意:

该属性还与视图中数据项的移动控制有关,当视图的movement属性设置为QListView.Snap时,数据项移动时将对齐到指定网格。

2.4、isWrapping属性

QListView的isWrapping属性用于控制视图中的数据项项布局在可见区域中没有足够空间时是否应换行。以下是两种布局方向情况下无足够可见空间展示数据项时进行换行展示的案例:

  • LeftToRight布局情况下的数据项排列换行案例

  • TopToBottom布局情况下的数据项排列换行案例

  • TopToBottom布局情况下的数据项排列不换行案例

该属性可以通过方法isWrapping()、setWrapping(bool enable)来进行访问或设置。

注意:

在视图可见时isWrapping属性的设置将导致视图中项目再次布局。

2.5、modelColumn属性

QListView的modelColumn属性用于控制视图中展现model中哪一列数据,缺省值为0,即展现第一列数据。

可以通过modelColumn()、setModelColumn(int column)来访问和设置该属性。

2.6、movement属性

QListView的movement属性用于控制在视图中怎么移动数据项,其类型为枚举类型QListView.Movement,有如下取值:

  • Static:对应值为0,表示数据项不能被移动
  • Free:对应值为1,表示数据项可以随意移动
  • Snap:对应值为2,在gridSize属性不为空的情况下表示数据项移动时会按指定网格对齐

2.7、resizeMode属性

resizeMode属性用于控制调整视图大小时是否再次排列视图中的数据项,其类型为枚举类型 QListView.ResizeMode,取值及含义如下:

  • Fixed:对应值为0,在调整视图大小时不会再次排列数据项
  • Adjust:对应值为1,在调整视图大小时,数据项将再次排列

默认情况下,此属性设置为“Fixed”。可以通过方法resizeMode()、setResizeMode(ResizeMode mode)来访问或设置该属性。

2.8、spacing属性

QListView的spacing属性用于控制视图布局中数据项周围填充的空白空间的大小。缺省值为0,可以通过方法spacing()、setSpacing(int space)来访问和设置spacing属性。

注意:
  • 当网格布局生效时(如属性gridSize设置了非空值)spacing不起作用;
  • 在视图可见时设置spacing属性会导致视图中数据项重新排列。

2.9、viewMode属性

QListView的viewMode属性用于控制QListView的视图模式,该属性类型为枚举类型QListView.ViewMode,有如下取值:

  • ListMode:对应值为0,在相关属性未设置的情况下,视图中的数据项排列方向控制属性flow的值为TopToBottom,movement值为Static,数据项占用较小的空间
  • IconMode:对应值为1,在相关属性未设置的情况下,视图中的数据项排列方向控制属性flow的值为LeftToRight,movement值为Free,数据项占用较大的空间

设置该属性将改变QListView在应用中未设置的属性以适应视图要设置的模式,除非调用clearPropertyFlags(),否则不会更改应用已设置的QListView相关的属性。

设置viewMode视图模式将根据选定的movement属性来启用或禁用拖放,对于ListMode,默认movement 属性值是Static (禁用拖放);对于IconMode,默认movement 属性值是Free (启用拖放)。

2.10、uniformItemSizes属性

uniformItemSizes属性用于控制视图中所有项是否具有相同大小,只有在确保视图中的所有项都具有相同的大小时,才应将此属性设置为True。

统一视图中所有项统一大小,可以使得视图在进行项排列时无需复杂计算,这使视图数据项排列时性能得到一些优化。

uniformItemSizes属性的缺省值为False,可以通过uniformItemSizes()、setUniformItemSizes(bool enable)进行属性的访问或设置。

2.11、wordWrap属性

wordWrap属性用于控制视图中数据项文本的换行策略。如果此属性为True,则在数据项文本中分词的适当处进行换;否则数据项文本不进行换行处理。默认情况下,此属性为True。

请注意,即使启用了换行,单元格也不会展开以适合所有文本,如果数据项的空间无法展示所有内容,则会根据textElideMode设定的省略号模式在文本中插入省略号。

该属性可以通过wordWrap()和setWordWrap(bool wordWrap)来进行访问和设置。

2.12、itemAlignment属性

QListView的itemAlignment属性用于控制每个数据项的对齐方式,其类型为枚举类Qt.Alignment或Qt.AlignmentFlag,其中 Qt.AlignmentFlag是对齐标记,它包括水平对齐标记、垂直对齐标记、两维对齐标记、以及右对齐应用模式中的组合标记:



对于对齐模式的掩码常量,没有找到相关资料说明其用途,老猿估计是用于对该属性的赋值数据通过与掩码常量进行与操作进行过滤使用,防止非正常对齐标记的数据出现。

注意:
  • Qt.Alignment是使用Qt.AlignmentFlag对应的对齐标记通过或(|)操作组合而成的,但如果组合时出现冲突的标记如水平对齐出现了两种不同的方式则该组合无效。
  • 只有在Flow属性为TopToBottom、isWrapping属性为True且viewMode属性为ListMode时才支持操作此属性
  • QListView的itemAlignment属性是Qt5.12的版本才引入的,低版本不支持
属性访问方法:

itemAlignment属性默认对齐方式为0,这意味着每个数据项将完全填充其所在单元格。可以通过方法itemAlignment()和setItemAlignment(Qt.Alignment)来访问或设置。

三、小结

本节详细介绍了QListView相关的属性,但专栏:使用PyQt开发图形界面Python应用除了本文中介绍的内容外,还有更多的细节,欢迎大家订阅支持老猿,谢谢!

老猿Python,跟老猿学Python!

第15.21节 PyQt(Python+Qt)入门学习:QListView的作用及属性详解的更多相关文章

  1. 第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解

    一.引言 Qt Designer中的Buttons部件包括Push Button(常规按钮.一般称按钮).Tool Button(工具按钮).Radio Button(单选按钮).Check Box( ...

  2. 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...

  3. 第15.24节 PyQt(Python+Qt)入门学习:Model/View架构中QTableView的作用及属性详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Designer的部件栏Item Views中提供了PyQt和Qt已经实现好的table ...

  4. 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  5. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  6. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  7. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

  8. 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  9. 第15.31节 PyQt(Python+Qt)入门学习:containers容器类部件GroupBox分组框简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

随机推荐

  1. 8、Django之模型层第三篇:更多字段与参数

    1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型 ...

  2. TODO_LIST

    H5 blog: http://html5doctor.com/designing-a-blog-with-html5/ 绝尘单词本----H5+Web NIO+netty+RPC

  3. CSS 三栏自适应布局

    CSS布局 这个很基础,方法也很多,要留意的知识点还是有一些. 比如IE6的触发layout  *zoom:1 比如使用浮动后的清除浮动  clear:both 需求的延伸也会有一些: 比如三栏等高 ...

  4. TCP拥塞控制原理

    一.何为拥塞 路由器无法处理高速到达的数据而被迫丢弃数据的现象叫做拥塞. 二.何为拥塞控制 TCP流量控制时为了平衡一个链接中接收方和发送方的速度匹配问题,当发送方发现发送速度大于接收方的接收速度时动 ...

  5. MySQL索引结构之Hash索引、full-text全文索引(面)

    Hash索引 主要就是通过Hash算法(常见的Hash算法有直接定址法.平方取中法.折叠法.除数取余法.随机数法),将数据库字段数据转换成定长的Hash值,与这条数据的行指针一并存入Hash表的对应位 ...

  6. gcc入门(下)

    一 头文件与库文件(模块化,可重用,好维护)在使用C语言和其他语言进行程序设计的时候,我们需要头文件来提供对常数的定义和对系统以及库函数调用的声明库文件是一些预先编译好的函数的集合,那些函数都是按照可 ...

  7. ubuntu无法关机

    在/etc/default/halt 增加下面 INIT_HALT = POWEROFF 另一种方法: I have the same problem and found a solution whi ...

  8. B+树作为数据库索引有什么优势?I/O方面?

    首先要了解磁盘预读机制,大致就是说,从磁盘读取数据的速度比从内存读取数据的速度要慢很多,所以要尽量减少磁盘I/O的操作,尽量增加内存I/O操作,既然这样,我们可以从磁盘提前把需要的数据拿到内存,这样需 ...

  9. 算法基础——Trie字符串统计

    原题链接 题目: 维护一个字符串集合,支持两种操作: "I x"向集合中插入一个字符串x: "Q x"询问一个字符串在集合中出现了多少次. 共有N个操作,输入的 ...

  10. guitar pro系列教程(二十四):Guitar Pro 7 中文界面的介绍

    用过Guitar Pro这款软件的小伙伴们都知道,Guitar Pro这款吉他软件因为是国外开发商研发的,所以软件最初都是英文版本,对于国内的的吉他爱好者来说,在软件使用上还是很不方便的.随着Guit ...