[英]Qt Table model to Tree model
在Qt中,我有一個引入的sqlite數據庫。其中一個表(configTable)附加了QSqlTableModel
。
該表具有簡單的2列鍵/值結構。 這些鍵是帶有類似於文件夾的值的字符串,例如“ general / name”,“ general / version”,“ foo / bar / baz”等。這些值只是任意的變體。
我想在易於瀏覽的QTreeView
而不是QTableView
顯示此數據,因為我的鍵結構非常適合QTreeView
。
在我重新實現類和各種瘋狂的東西之前-是否有一個優雅的解決方案? 如果我重新實現或擴展類,應該看哪一個?
謝謝。
您必須自己在value/value/value
列表和樹模型之間進行解析+映射。 但是有一種(棘手的)Qt方法可以做到這一點。
基於QAbstractItemModel
類, Qt Model-View體系結構可以表示許多不同的數據結構。 Qt模型必須實現一些告訴視圖的功能:多少列,行,子級等。
列表模型(Qt提供QAbstractListModel
),基本上是一個對視圖說的模型:
QModelIndex
表示,根具有無效的父項) 樹模型將為每個QModelIndex
返回適當的QModelIndex
。 Qt的抽象模型實際上允許每個子項成為一個表( QModelIndex
始終具有一個父項和一個行列索引)。
長話短說,您必須創建一個代理模型( QAbstractProxyModel
或合適的子類,但是出於您的需要,我認為沒有一個)。 該代理將轉換QSqlTableModel
發送的數據,在這里您可以告訴視圖您實際上有一個樹而不是一個列表。
您的根項目是數據庫鍵列表( foo/bar/whatever
第一個元素)中的項目,但是您需要重新分組所有具有相同鍵的根項目。
AFAIK您只能手動設置。
基本上,因為您如何看待Qt知道如何將數據轉換為樹模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.