• PyQt学习随笔:Model/View架构中的Delegate(委托)


    不同于MVC模式,Model/View设计并不包含用于处理与用户交互的完全独立的部件, 没有将用户交互部分完全分离。一般地,视图负责把模型数据显示给用户,以及处理用户的输入。但是,对于某些特殊要求(比如要求必须输入数字),则交予Delegate(委托)完成。

    Delegate(委托)组件提供输入功能,同时也能渲染某些特殊数据项。Delegate(委托)就是供视图实现某种高级的编辑功能,在视图中提供输入功能,同时负责传递视图中的单个项。可以说Delegate(委托)是PyQt Model/View架构中用于进行数据输入的类,类似于MVC架构中的C。

    Delegate渲染数据项,当某个数据项被编辑时,Delegate通过模型索引与Model直接进行交互, 从Delegate发射的信号被用于在编辑时通知Model和View关于当前编辑器的状态信息。

    使用Delegate后,Model/View相关类可以被分成三组:Models,Views,Delegates,因此也被称为MVD架构,Model/View框架中,所有模型类具有共同的抽象基类QAbstractItemModel,所有视图类具有共同的抽象基类QAbstractItemView,所有委托类具有共同的抽象基类QabstractItemDelegate。只不过PyQt中使用的标准View控件提供了默认的Delegate实现,一般情况下不用关注。


    博客地址:https://blog.csdn.net/LaoYuanPython

    老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

  • 相关阅读:
    CSS 层叠样式表
    一. 图论
    二. log4j配置文件
    三.注解
    3. Map与Tuple
    MappedByteBuffer读写文件
    2. scala中的数组
    1.scala语法
    二. 模式匹配
    一.算法的数学基础
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931717.html
Copyright © 2020-2023  润新知