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. PHP无限级评论回复功能实现

    protected function commentList($aid,$pid = 0,&$result=array()){ $arr = ArticleComment::relation( ...

  2. Pandas_数据读取与存储数据(精炼)

    # 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...

  3. 8.java设计模式之装饰者模式

    基本需求: 咖啡的种类有很多种,调料也有很多种,下单时,可以点单品咖啡也可以点单品咖啡+调料的组合,并计算下单时花费的金额 传统方式: 方式一 创建一个抽象类Drink,让所有的单品咖啡和组合咖啡都继 ...

  4. 协程gevent模块和猴子补丁

    # pip 装模块 greenlet和gevent # 协程 # 与进程.线程一样也是实现并发的手段 # 创建一个线程.关闭一个线程都需要创建寄存器.栈等.需要消耗时间 # 协程本质上是一个线程 # ...

  5. 解决docker镜像无vim

    docker拉取的镜像一般都是ubantu系统 安装vim apt-get update apt-get vim

  6. MQ消息中间件,面试能问些什么?

    MQ消息中间件,面试能问些什么? 为什么使用消息队列?消息队列的优点和缺点? kafka.activemq.rabbitmq.rocketmq都有什么优缺点? 面试官角度分析: (1)你知不知道你们系 ...

  7. 【硬件】HDMI接口HPD原理

    目录 一.什么是HPD? 二.HDMI的HPD(热插拔)原理 三.HDMI源端对HPD信号有什么要求? 由于项目需要通过HDMI获取EDID的数据,需要学习一下其获取的工作原理,所以在这里记录下. 一 ...

  8. 来看看面试必问的HashMap,一次彻底帮你搞定HashMap源码

    HashMap结构 数组+链表+红黑树 链表大于8转红黑树,红黑树节点数小于6退回链表. 存放的key-value的Node节点 static class Node<K,V> implem ...

  9. java开发两年,这些线程知识你都不知道,你怎么涨薪?

    前言 什么是线程:程序中负责执行的哪个东东就叫做线程(执行路线,进程内部的执行序列),或者说是进程的子任务. Java中实现多线程有几种方法 继承Thread类: 实现Runnable接口: 实现Ca ...

  10. 应聘阿里,字节跳动,美团必须掌握的Spring IOC与工厂模式

    Spring IOC与工厂模式 PS:本文内容较为硬核,需要对java的面向对象.反射.类加载器.泛型.properties.XML等基础知识有较深理解. (一)简单介绍 在讲Spring IOC之前 ...