模型视图中的委托

本文介绍了模型视图中委托的概念及其实现细节。委托负责处理用户输入,包括创建编辑组件、更新组件大小、设置和获取数据等。文章还探讨了自定义委托的方法,并给出了一种改进方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型视图中的委托

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

这里写图片描述

这里写图片描述

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

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

这里写图片描述

委托的本质

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

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

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

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

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

这里写图片描述

这里写图片描述

这里写图片描述

改进思路:

这里写图片描述

解决方案:

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

任务进度模拟:

  • 定义计时器用于模拟任务进度
  • 定义计时器槽函数void timerTimeout()
  • 在槽函数中修改模型中的数据
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值