• 4814阅读
  • 3回复

[提问]Model/View中的delegate作用? [复制链接]

上一主题 下一主题
离线17611904
 
只看楼主 倒序阅读 楼主  发表于: 2011-09-02
Model是连接数据源的,而View是把数据显示给用户的。
那么delegate是用来修改数据的吗?model不能修改吗?求大神指点。
离线liuxu_lx7
只看该作者 1楼 发表于: 2011-09-02
回 楼主(17611904) 的帖子
它决定修改一个数据使用什么控件, 以及你Model里的数据应该显示成什么样。

比如:如果是颜色值,可以用它来指定采用“调色板”让用户选择,而不是填写RGB的字符串。

至于显示,你有个 RGB(125, 78, 45) 颜色值,用文本方式表现很不直观,用delegate改写它的表现形式,让它直观的显示出该颜色。
离线17611904
只看该作者 2楼 发表于: 2011-09-02
回 1楼(liuxu_lx7) 的帖子
那它和MVC中的controller有什么区别呢?看了书上貌似没怎么讲。
离线liuxu_lx7
只看该作者 3楼 发表于: 2011-09-02
回 2楼(17611904) 的帖子
它和Controller 没关系。 MVC是一种设计理念。两者完全不是一个【论域】。
delegate在【Qt助手】里讲的挺详细。就是为了让你可以修改view中的表现。

制作需求大致是这样:你对View里的某种item表现形式不满意,那么就要用到delegate,以model为数据依据,让这个数据按照自己需要的控件类型来表现。

看图中最后一列,它很明显是自定义的表现。

别的UI库有没有相同作用的类,我不清楚。但可以认为delegate只是遵循Qt中MV(C)机制,为解决用户自定义需求的而设计的具体方案,提供给用户一个统一的解决此类问题的接口。

附:在Qt中,没有单独的 Control,  它是融合在View里的,所以MV(C)表达,也许更合理些吧
快速回复
限100 字节
 
上一个 下一个