2013-03-12 171 views
1

我有一個數據表示如下:QT自定義樹視圖


  • - +父(0:0)
    • ---- + Child1(1:1)
      • ---- + Child11(2:2)
    • ---- + Childn(1:N)

我使用的是QT TreeView和一個自定義模式,想顯示它。 我的要求是,與孩子相比,家長需要處於不同的專欄中。

如果父col:行是0:0。 子列:行應該是1:1。 此外,孩子的孩子可以有col:row作爲2:2

據我讀過的Qt論壇沒有簡單的方法來做到這一點。它說我必須實現基於Qt treeview的自定義視圖。 這是唯一的方法嗎?有沒有一個如何實現像視圖一樣的自定義樹作爲參考的例子? 我在Linux上使用Qt 4.7(Ubuntu 12) 任何幫助,非常感謝。

在此先感謝。

+0

這是一個一半的答案,所以我張貼註釋。這是一個如何做自己的樹模型的好例子。我建議大量複製它,然後重新定型以滿足您的需求。 http://qt-project.org/doc/qt-4.8/itemviews-simpletreemodel.html – 2013-03-12 10:04:33

+0

@EricJohnson:我相信他的問題是針對典型樹模型的默認QTreeview顯示行爲,而不是模型本身,因爲他已經擁有實施一個自定義模型。 – ksming 2013-03-12 10:11:11

回答

1

我不認爲你可以修改樹視圖顯示行爲沒有子類QTreeView。另一種方法是實現一個QAbstractProxyModel將您的自定義模型映射到新的代理模型,根據自己的樹級別將自定義模型中的每個索引映射到代理模型中的不同列。我認爲後一種方法比較容易,因爲您已經熟悉實現自定義模型而不是QTreeView。

看一看文檔瀏覽: http://qt-project.org/doc/qt-4.8/qabstractproxymodel.html

+0

是的,這是正確的做法。我發現最近在Qt-Apps上發佈了一些類似和有用的東西。這裏是鏈接http://qt-apps.org/content/show.php/QAIV?content=157705,以防萬一任何人需要將來使用。謝謝@ksming – user2160108 2013-04-04 14:03:01