Reputation: 43
I presently have a QTreeWidget named 'treeWidget', and for the life of me, cannot figure out how to get the index value or the text of the selected treeWidget branch.
self.treeWidget looks like:
User
-Inbox
-Sent
-Drafts
-Trash
I need to know which branch is selected so I can display folders in the branch's corresponding file folder. I've been trying to understand the Qt documentation, but I'm totally stumped by the C++. And the PyQt docs don't have any examples. I've searched everywhere for three days trying to tinker and figure out the answer but keep coming up with errors.
The closest I think I've come is something like this:
self.connect(self.treeWidget,SIGNAL("itemSelectionChanged()"), self.loadAllMessages) def loadAllMessages(self, folder): item = self.treeWidget.currentItem()
Do I need to setSelectionMode first or something? All help is greatly appreciated!
Upvotes: 4
Views: 20176
Reputation: 191
Following Achayans answer and comments, you get the index as a QModelIndex by using .indexFromItem()
. To retrive now the real index, you need to use .row()
which is described here and shown in the following code:
self.treeWidget.itemSelectionChanged.connect(self.loadAllMessages)
def loadAllMessages(self, folder):
getSelected = self.treeWidget.selectedItems()
if getSelected:
baseNode = getSelected[0]
qmIndex = self.treeWidget.indexFromItem(baseNode)
itemIndex = qmIndex.row()
print('Selected index: ', itemIndex)
Upvotes: 0
Reputation: 5885
Try This
#remove the old way of connecting
#self.connect(self.treeWidget,SIGNAL("itemSelectionChanged()"), self.loadAllMessages)
self.treeWidget.itemSelectionChanged.connect(self.loadAllMessages)
def loadAllMessages(self, folder):
getSelected = self.treeWidget.selectedItems()
if getSelected:
baseNode = getSelected[0]
getChildNode = baseNode.text(0)
print getChildNode
Upvotes: 8