簡體   English   中英

Qt表模型到樹模型

[英]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.

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