JokerMartini
JokerMartini

Reputation: 6147

How to expand top-level QTreeview items

I do not understand why this does not seem to expand the top-level root items in a QTreeView:

# clear existing treeview data
model = self.treeview.model().sourceModel()
model.clear()

# add treeview items here

# expand root level items
root = model.invisibleRootItem()
index = root.index()
for i in range(root.rowCount()):
    item = model.indexFromItem(model.item(i,0))
    self.treeview.expand(item)
    self.treeview.setExpanded(item, True)
    print 'expanded'

Upvotes: 1

Views: 3834

Answers (1)

ekhumoro
ekhumoro

Reputation: 120738

If you're using a proxy model, you must use the indexes it provides, rather than the ones from the source model. So either do this:

proxy = self.treeview.model()

for row in range(proxy.rowCount()):
    index = proxy.index(row, 0)
    self.treeview.expand(index)

or this:

proxy = self.treeview.model()
model = proxy.sourceModel()    

for row in range(model.rowCount()):
    index = model.index(row, 0)
    self.treeview.expand(proxy.mapFromSource(index))

Upvotes: 4

Related Questions