翻譯|使用教程|編輯:龔雪|2023-01-29 10:06:26.270|閱讀 363 次
概述:本教程將為大家介紹每個UI開發人員都應該了解的ModelView編程,歡迎下載相關組件體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
每個UI開發人員都應該了解ModelView編程,本教程的目標是為大家提供一個簡單易懂的介紹。
Qt 是目前最先進、最完整的跨平臺C++開發工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用于超過70個行業、數千家企業,支持數百萬設備及應用。
表格、列表和樹小部件是GUIs中經常使用的組件,這些小部件有兩種訪問數據的不同方式。傳統的方法涉及小部件,其中包括用于存儲數據的內部容器,這種方法非常直觀,但是在許多重要的應用程序中,它會導致數據同步問題。第二種方法是模型/視圖編程,其中小部件不維護內部數據容器,它們通過標準化接口訪問外部數據,因此避免了數據重復。乍一看,這似乎很復雜,但一旦仔細觀察,它不僅容易掌握,而且模型/視圖編程的許多好處也變得清晰起來。
在這個過程中,我們將學習Qt提供的一些基本技術,例如:
您還將了解使用模型/視圖編程是否可以更容易地編寫新應用程序,或者傳統的小部件是否也能工作。
本教程包括示例代碼,供您編輯和集成到項目中,教程的源代碼位于Qt的examples/widgets/tutorials/modelview目錄下。
Model/View(模型/視圖)是一種用于在處理數據集的小部件中將數據與視圖分離的技術,標準的小部件不是為將數據與視圖分離而設計的,這就是Qt有兩種不同類型的小部件的原因。這兩種類型的小部件看起來是一樣的,但它們與數據的交互方式不同。
標準小部件使用作為小部件一部分的數據。
視圖類操作外部數據(模型)
1.1 標準Widgets(小部件)
讓我們仔細研究一下標準表格小部件,表格小部件是用戶可以更改數據元素的2D數組,通過讀寫表格小部件提供的數據元素,可以將表格小部件集成到程序流中。這種方法在許多應用程序中非常直觀和有用,但是使用標準表格小部件顯示和編輯數據庫表可能會有問題,必須協調兩個數據副本:一個在小部件外部,一個在小部件內部,開發人員負責同步兩個版本。除此之外,表示和數據的緊密耦合使得編寫單元測試更加困難。
1.2 拯救模型/視圖
模型/視圖進一步提供了一個使用更通用的體系結構的解決方案,模型/視圖消除了標準小部件可能出現的數據一致性問題。模型/視圖還可以更容易地使用相同數據的多個視圖,因為一個模型可以傳遞給多個視圖。最重要的區別是模型/視圖小部件不將數據存儲在表單元格后面,事實上,它們直接從您的數據中進行操作。由于視圖類不知道數據的結構,因此需要提供一個包裝器,使數據符合QAbstractItemModel接口,視圖使用這個接口來讀取和寫入數據。實現QAbstractItemModel的類的任何實例都被稱為模型,一旦視圖接收到一個指向模型的指針,它將讀取并顯示內容,并成為它的編輯器。
1.3 模型/視圖小部件概述
下面是模型/視圖小部件及其相應的標準小部件的概述。
1.4 在表單和模型之間使用適配器
在表單和模型之間使用適配器可以派上用場。
我們可以直接從表單本身編輯存儲在表中的數據,但是在文本字段中編輯數據要舒服得多。對于操作一個值(, ...)替代數據集的小部件,沒有直接的模型/視圖對應物來分離數據和視圖,因此我們需要一個適配器來將表單連接到數據源。
是一個很好的解決方案,因為它將表單小部件映射到表單行,并且非常容易為數據庫表構建表單。
適配器的另一個例子是QCompleter,Qt有QCompleter,用于在QComboBox和QLineEdit等Qt小部件中提供自動補全功能,QCompleter使用一個模型作為它的數據源。
Qt技術交流群:166830288 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網