[問題] 關於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