Skip to content

Instantly share code, notes, and snippets.

@ben-hearn-sb
Created August 29, 2023 21:47
Show Gist options
  • Save ben-hearn-sb/0a712cf379c20eee757833cbff8a27c6 to your computer and use it in GitHub Desktop.
Save ben-hearn-sb/0a712cf379c20eee757833cbff8a27c6 to your computer and use it in GitHub Desktop.
test_tree.py
from PySide6 import QtCore
from tests.test_tree_item import TreeItem
class TreeModel(QtCore.QAbstractItemModel):
def __init__(self, data, parent=None):
super().__init__(parent)
self.root_item = TreeItem(["Title", "Description"])
self.setupModelData(data, self.root_item)
def setupModelData(self, data, parent):
for item in data:
parent.appendChild(TreeItem(item, parent))
def index(self, row, column, parent=QtCore.QModelIndex()):
if not self.hasIndex(row, column, parent):
return QtCore.QModelIndex()
if not parent.isValid():
parent_item = self.root_item
else:
parent_item = parent.internalPointer()
child_item = parent_item.child(row)
if child_item:
return self.createIndex(row, column, child_item)
return QtCore.QModelIndex()
def parent(self, index):
if not index.isValid():
return QtCore.QModelIndex()
child_item = index.internalPointer()
parent_item = child_item.parent_item
if parent_item == self.root_item:
return QtCore.QModelIndex()
return self.createIndex(parent_item.row(), 0, parent_item)
def rowCount(self, parent=QtCore.QModelIndex()):
if parent.column() > 0:
return 0
if not parent.isValid():
parent_item = self.root_item
else:
parent_item = parent.internalPointer()
return parent_item.childCount()
def columnCount(self, parent=QtCore.QModelIndex()):
return self.root_item.columnCount()
def data(self, index, role=QtCore.Qt.DisplayRole):
if not index.isValid():
return None
if role == QtCore.Qt.DisplayRole:
item = index.internalPointer()
return item.data(index.column())
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment