作者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://www.ptt.cc/bbs/C_and_CPP/M.1604486931.A.AF4.html
推 CoNsTaR: safe不safe只是自嗨/讓別人接受這個設計的藉口而已 11/05 07:20
→ CoNsTaR: 真的從 safety 的角度下去設計的東西才不會長這樣 11/05 07:20
→ CoNsTaR: 但他們免費寫東西給你用,就隨他們講吧,不需要太執著於 11/05 07:20
→ CoNsTaR: 這個(因為沒有結果) 11/05 07:20
→ CoNsTaR: 你只要知道他們預期你怎麼用他們寫的東西就好了 11/05 07:20
→ CoNsTaR: 回你的問題,如果你有一個 type `Dog`,你知道它是動物, 11/05 07:20
→ CoNsTaR: 它實際上也有所有身為動物需要的東西,但在一個 nominal 11/05 07:20
→ CoNsTaR: 的 type system 下,在你讓他繼承動物以前,它就不是一 11/05 07:20
→ CoNsTaR: 個動物 11/05 07:21
→ CoNsTaR: 同理,這邊你的 data 不是通過 model 餵給 view,那它就 11/05 07:21
→ CoNsTaR: 不是“safe”的 data 11/05 07:21