模型视图中的委托

来源:互联网 发布:jade软件 编辑:程序博客网 时间:2024/06/11 14:06

模型视图中的委托

  • 委托(Delegate)是视图中处理用户输入的部件
  • 视图可以设置委托对象用于处理用户输入
  • 委托对象负责创建和显示用户输入上下文
    • 如:编辑框的创建和显示

这里写图片描述

这里写图片描述

这里写图片描述
委托中的关键函数

  • createEditor
    • 需要编辑数据时,创建编辑组件
  • updateEditorGeometry
    • 更新编辑器组件的大小
  • setEditorData
    • 通过索引从模型中获取数据
  • setModelData
    • 将编辑后的新数据返回模型

这里写图片描述

委托的本质

  • 为视图提供数据编辑的上下文环境
  • 产生界面元素的工厂类
  • 能够使用和设置模型中的数据

自定义委托时需要重写的函数

  • createEditor
  • updateEditorGeometry
  • setEditorData
  • setModelData
  • paint(可选)

自定义委托类时需要重写相应的成员函数
根据需要创建编辑组件并设置组件中的数据
编辑结束后将数据返回模型

Qt中的委托作为视图的内部组件而存在,因此,委托时视图的一部分;必然,委托需要承担数据显示的部分工作

这里写图片描述

这里写图片描述

这里写图片描述

改进思路:

这里写图片描述

解决方案:

  • 自定义新的委托类
  • 在paint成员函数中绘制进度条显示方式
  • 在editorEvent成员函数中禁止数据编辑操作

任务进度模拟:

  • 定义计时器用于模拟任务进度
  • 定义计时器槽函数void timerTimeout()
  • 在槽函数中修改模型中的数据
    这里写图片描述
原创粉丝点击