[问题] 关于QT的M/V架构概念

楼主: d630200x (DOGE)   2020-11-04 18:48:48
最近在学QT,看到教学关于model/view的架构有点卡住,不晓得理解对不对
从概念来看,所谓的m/v架构有4个角色
1.data
2.model
3.view
4.delegate
其中的关系为:
a.只有model能对data操作
b.view透过delegate或者model进行rendering
c.只有delegate能对model editing
从结果来看,因为此架构,QT的各个元件能保证资料同步
而我目前卡住的点在于model的部份
以QStringListModel,存放的资料为型态QStringList
但考虑到实作,QStringList就是一种资料结构,本身的data为QString,list也必须实现资料操作的method
也就是说概念上model的定义:提供view的关于data的API部份,QStringList本身就已经实现了
只差在不保证资料同步
我的理解在于,概念上model的定义是一回事,但实际上model的重点应该在保证资料同步上(比如说thread-safe)
也就是说,假设我今天做了一个叫做QStringListDataSafe的东西喂给view
这种状况下,应该也是符合model/view的概念
请问我的理解对吗?
作者: CoNsTaR ((const *))   2020-11-05 07:20:00
safe不safe只是自嗨/让别人接受这个设计的借口而已真的从 safety 的角度下去设计的东西才不会长这样但他们免费写东西给你用,就随他们讲吧,不需要太执著于这个(因为没有结果)你只要知道他们预期你怎么用他们写的东西就好了回你的问题,如果你有一个 type `Dog`,你知道它是动物,它实际上也有所有身为动物需要的东西,但在一个 nominal的 type system 下,在你让他继承动物以前,它就不是一个动物同理,这边你的 data 不是通过 model 喂给 view,那它就不是“safe”的 data

Links booklink

Contact Us: admin [ a t ] ucptt.com