Model/View架构中的视图部件是基于模型的项视图(Item Views(Model-Based)),要求使用视图的应用必须自己创建模型,管理模型中的数据项,这种方式应用实现起来稍微有点复杂,为此在PyQt和Qt中提供了基于项的项部件(Item Widgets(Item-Based)),包括列表部件(List Widget)、树部件(Tree Widget)、表部件(Table Widget),它们对应的类分别是QListWidget、QTreeWidget、QTableWidget。这三个类严格意义上说也是Model/View架构的一部分。

列表部件、树部件、表部件这三个对应的类QListWidget、QTreeWidget、QTableWidget是从基于模型的项视图对应类QLIstView、QTreeView、QTableView派生出来的便利类。QListWidget提供项列表,QTreeWidget显示多级树结构,QTableWidget提供表格式的数据项管理。

这些便利类在基于模型的项视图基础上,实现了项选择和标题管理的通用功能。每个便利类都有许多基于项的特性,这些特性通过每个类中的相同接口来使用。包括:

  • 隐藏项

    有时可以在项目视图部件中隐藏项目,而不是删除它们。列表部件、树部件、表部件的项都可以隐藏起来,可以通过调用isItemHidden() 方法确定项是否隐藏,也可以使用setItemHidden()隐藏项。由于相关操作是基于项的,因此三个便利类都可以使用相同的函数。
  • 选择

    选择项的方式由便利类的选择模式(继承自QAbstractItemView的SelectionMode属性)控制。此属性控制用户是否可以选择一个或多个项目,以及在多个项目选择中,选择是否必须是一个连续的项目范围。选择模式对上述所有便利类的工作方式相同。关于选择模式请参考《PyQt(Python+Qt)学习随笔:QAbstractItemView的selectionMode属性》的介绍。

    在便利类中可以使用selectedItems()方法来通过迭代方法读取部件中被选中的项。
  • 搜索

    无论是作为开发人员还是作为向用户提供服务,能够在项视图部件中搜索项是常用的功能。所有三个项目视图便利类都提供了一个公共的findItems()方法用于搜索项。根据从Qt.MatchFlags中选择的值指定的条件,通过包含的文本搜索项。我们可以使用findItems()函数获取匹配项的列表。

    关于Qt.MatchFlags请参考《PyQt(Python+Qt)学习随笔:Model/View中的枚举类 Qt.MatchFlag的取值及含义》。
  • 项初始化

    QListWidget、 QTableWidget和QTreeWidget中的项在拖放处理上都进行了一些初始化设置,如QListWidget的QListWidgetItem项 、QTreeWidget中的QTreeWidgetItem项初始化时,enabled、 checkable、selectable和使用作为拖放源上都是为True,而QTableWidget中的QTableWidgetItem项被初始化为可编辑和接受拖放数据操作。

    实际上,上述初始化可以在Qt Designer中进行调整。

老猿Python,跟老猿学Python!

PyQt(Python+Qt)学习随笔:基于项的项部件(Item Widgets(Item-Based))概述的更多相关文章

  1. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性

    老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...

  2. PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项

    老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...

  3. PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...

  4. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...

  5. PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...

  6. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑>中,老猿觉得dragE ...

  7. PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性

    autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性

    accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性

    toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...

  10. PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义

    在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ...

随机推荐

  1. It is better to have the ability of fast learning

    来自某位大佬: 内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文 十足的自信心+强烈的求知欲+对Programming&&C&&CPP的执着+百折不挠的钻研 ...

  2. Pycharm激活码,2020年9月29日最新激活码

    分享一个Pycharm激活码给大家: 5MJ8MJ2T1Q-eyJsaWNlbnNlSWQiOiI1TUo4TUoyVDFRIiwibGljZW5zZWVOYW1lIjoi6I635Y+W77yaIG ...

  3. jupyter使用自动补全和切换默认浏览器

    自动补全 可以做conda环境中执行以下命令.linux下打开conda环境的命令是: conda activate 退出conda环境的命令是: conda deactivate 安装插件: pip ...

  4. epoll oneshot

    /* Epoll private bits inside the event mask */#define EP_PRIVATE_BITS (EPOLLWAKEUP | EPOLLONESHOT | ...

  5. MySQL视图详细介绍

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  6. 快速熟悉 Oracle AWR 报告解读

    目录 AWR报告简介 AWR报告结构 基本信息 Report Summary Main Report RAC statistics Wait Event Statistics 参考资料 本文面向没有太 ...

  7. 配置Ceph的IPV6集群

    前言 对于IPV6实在是非常的陌生,所以本篇开始会讲一下最基本的网络配置,首先让网络能通起来,最开始就是因为不熟悉IPV6,而直接使用了link local地址,造成了mon部署的时候进程无法绑定到I ...

  8. DjangoWeb _ 登录页开发test

    1.数据库设计 user表 --id 自增 --username varchar(20) --password varchar(25) --add_time datetime 2.数据操作 新增 修改 ...

  9. property内置装饰器函数和@name.setter、@name.deleter

    # property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import ...

  10. spring boot和spring cloud的区别

    Java中说到微服务肯定离不开Spring Boot和Spring Cloud,这两者到底有什么关系,什么是微服务,如果单纯的说SpringBoot,SpringCloud,都是不准确的,那应该怎么回 ...