作者d630200x (DOGE)
看板C_and_CPP
标题[问题] 关於QT的M/V架构概念
时间Wed Nov 4 18:48:48 2020
最近在学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的概念
请问我的理解对吗?
-----
Sent from JPTT on my Asus ASUS_I01WD.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.10.248 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1604486931.A.AF4.html
1F:推 CoNsTaR: safe不safe只是自嗨/让别人接受这个设计的藉口而已 11/05 07:20
2F:→ CoNsTaR: 真的从 safety 的角度下去设计的东西才不会长这样 11/05 07:20
3F:→ CoNsTaR: 但他们免费写东西给你用,就随他们讲吧,不需要太执着於 11/05 07:20
4F:→ CoNsTaR: 这个(因为没有结果) 11/05 07:20
5F:→ CoNsTaR: 你只要知道他们预期你怎麽用他们写的东西就好了 11/05 07:20
6F:→ CoNsTaR: 回你的问题,如果你有一个 type `Dog`,你知道它是动物, 11/05 07:20
7F:→ CoNsTaR: 它实际上也有所有身为动物需要的东西,但在一个 nominal 11/05 07:20
8F:→ CoNsTaR: 的 type system 下,在你让他继承动物以前,它就不是一 11/05 07:20
9F:→ CoNsTaR: 个动物 11/05 07:21
10F:→ CoNsTaR: 同理,这边你的 data 不是通过 model 喂给 view,那它就 11/05 07:21
11F:→ CoNsTaR: 不是“safe”的 data 11/05 07:21