簡體   English   中英

我不明白QAbstractItemModel的工作原理

[英]I don't understand how QAbstractItemModel works

到目前為止,我已經成功地使用了該類,但是我覺得我對自己的工作沒有很好的概念性理解。 我缺少有關Qt模型/視圖架構的基本知識,這使我無法充分利用它。 Qt doc似乎沒有解決我的問題。 我缺乏了解的很多地方似乎都圍繞data()方法。

例如:1)文檔沒有正確解釋(或我錯過了)什么是data()方法以及如何正確使用它。 我只是有一個模糊的想法,當我的模型有任何更改時,它是某種回調或插槽函數。 但是從架構上來講,它的作用是什么? 為什么需要它,它要解決什么問題?

2)說到角色,數據方法中角色參數的意義是什么? 同樣,為什么設計人員選擇以這種方式實現data()方法?

我希望我的問題不要太抽象。 如果是這樣,可能是因為我不完全了解關於模型/視圖架構的不了解。 因此不太確定如何提出我的問題。

無論如何,歡迎對這些概念有一定了解的任何人來參加。此外,如果有人比Qt Doc更好地解釋了這一點,那么其他人也可以對此進行解釋。

非常感謝您的任何反饋。

正如函數名稱所暗示的,“ QAbstractItemModel :: data()”用於提供應由視圖可視化的信息。 View不需要一次緩存所有數據(在某些情況下為數千個元素),但應在屏幕上顯示后立即從此函數進行增量查詢。

當談論數據時,我假設它可以是項目的文本,文本顏色,背景顏色,圖標等。所有這些類型的數據都由Qt::ItemDataRole枚舉表示,而數據本身由QVariant表示。

例如,如果您具有樹視圖和相應的模型。 向下滾動樹時,它應該繪制,例如20個節點。 樹視圖為這20個節點中的每一個調用模型的data()函數以繪制其文本,圖標,背景等。

最后,為了更好地理解角色。 Qt iconData()模型中具有textData()colorData()iconData()函數, iconData()提供了一個單一的函數data() ,可以根據角色有條件地選擇要返回的數據。 這是非常方便的設計明智的選擇。

您是否了解過模型/視圖編程?

http://doc.qt.io/qt-4.8/model-view-programming.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM