Qt Model View系列文章

2021-10-22 15:20:29 字數 1088 閱讀 6110

最近搞了不少自定義model/view東西,積累了不少經驗和坑,現在寫下來。

=》=我是個快樂的分割線2021.3.30

《系統提供的各種標準model使用我在這裡就不闡述了。

網上有各種文章和討論,我說下用這些東西產生的一些理解

view不做過多討論,qt提供的各種顯示樣式和編輯樣式,主要還是在與使用者做交流,model中modeindex應該qt model的核心想法,model通過這個建立起乙個索引,view按照這個體系來顯示來編輯,然後model也可以與資料本身打交道。接下來資料下面本身自己完成 「增刪改」 之類的操作,然後通過訊號槽之類的來通知model更新並更新view顯示。這樣條理清晰,並且一般可以把涉及到大量運算或者資料量太大的更新通過子執行緒完成 「增刪改」,這樣ui主線程也不會卡頓,程式設計師自己可以控制顯示更新的頻率、方式等。

哈哈我在後面說到:建議先多看看qt官方例子和model/view的說明再來看我的胡扯,因為我可能詞不達意、寓意混亂等。

我覺得重要的一點秉持乙個原則data、model、view是分開的,data的複雜操作不要影響主線程,一定要讓ui如絲滑般流暢。。。資料結構設計得要合理、優雅。

qabstracttablemodel+qtableview

資料儲存在記憶體中,一般最好是qlist這種型別,方便sort、查詢顯示等。

qsqlquerymodel+qtableview

資料儲存在資料庫中,qsqlquerymodel的優點是可以自定義sql查詢各個表的內容出來自定義顯示。

缺點是更新都是一坨更新,此時它的更新模式應該是一次讀取256條資料顯示,當你上下滑動時會自動拉取資料庫中更多的內容來顯示,感覺也挺舒服的。所以這導致比如你是一秒來一條新資料並且你還要實時顯示出來的話,那你就不得不1秒讀取一次內容來顯示,感覺不太舒服。

這個mode本身並不直接提供資料直接插入到資料庫,你得自己處理,一般來說網上會推薦有這種需求的使用qsqltablemodel不過這個model只支援單錶操作。

qabstractitemmodel+qtreeview

這個相對比較複雜,因為每乙個item都有爹有兒子(沒有的拉到),是樹形結構,所以最好來說你應該自己定義實現乙個item類。設計好你的資料儲存結構,一定要優雅,謝謝。

MyBatis 系列文章

二 mybatis系列 全域性配置檔案 使用pojo實體來接收資料和傳入引數 多級關聯查詢結果對映 關聯物件屬性及延遲載入 四 mybatis系列 原始dao方式開發 五 mybatis系列 動態 方式開發 六 mybatis系列 註解方式開發 七 mybatis系列 延遲載入 八 mybatis系...

git系列文章

霍格沃茲測試學院是由中國最大的測試開發技術社群 testerhome 孵化的高階教育品牌,致力於為 it 行業提供最優秀的測試開發技術培訓和人才服務。學院成立於 2017 年,不到一年時間就已經服務上萬使用者且好評不斷。學院已經與 70 多家最頂級的一線網際網路公司建立合作聯絡,包括 阿里 騰訊 美...

python寫文章 Python系列文章彙總

經過乙個多月的努力,終於把 python 相關的文章更新完畢,這些文章主要包括兩大模組 爬蟲系列和 python 高階系列。我在這裡做乙個彙總,幫助你更有效率的找到這些文章。爬蟲系列 python 高階系列 爬蟲系列是當時在做爬蟲時,對於如何構建乙個通用的爬蟲平台,所做的總結和思考,在這期間也研讀了...