Hello all,
I am writing a UI for a tool I put together a while back and am gathering a table view with a list of objects in one column and their parents in the other.
My QtableWidget view is giving me some very strange behaviour when selecting my items. The further down the list you get when you select the objects in column 0 the worse the return results get for example:
My table view looks essentially like this currently:
Root Master parent
anim_door parent_car_02
car_test World
Car_test_01 World
anim_door_left parent_car_test_02
anim_door_02 parent_car_02
car_test_02 World
Car_test_03 World
anim_door_right parent_car_test_02
I have a selection changed signal and am trying to get the Root and the parent using the following code:
def selectionChanged(self):
selectedItems = self.table.selectedItems()
for selected in selectedItems:
print selected.text()
#qIndex = self.table.indexFromItem(selected)
print"Root: ", self.table.item(selected.row(),selected.row()).text()
print "Parent: ", self.table.item(1,selected.row()).text()
Everything is working as far as on selection changed goes but the results I am getting are very odd. For example if I select row 7 values I will get:
Root: World
Parent: World
If I select row 0 I will get:
Root: anim_door
Parent: car_test
Selection of row 4:
Root: Car_test_01
Parent: Anim_door_left
I am not sure why I am getting these values. Could it have something do do with my initialisation or perhaps my selection model?
Selection model:
self.tableModel = self.table.selectionModel()
self.tableModel.selectionChanged.connect(self.selectionChanged)
def initTable(self):
itemsInScene =
pm.ls(dag=True)
for item in itemsInScene:
# If the item is question has no attribute it errors hence the try except 1
try:
# If isRoot exists then add it to the list
if pm.getAttr(item.isRoot):
self.dictOfRoots.update({str(item.nodeName()):str(self.splitName(item, 0))})
except:
pass
rowNum = 0
self.table.setRowCount(len(self.dictOfRoots))
for key in sorted(self.dictOfRoots):
columnNum = 0
rootName = QtGui.QTableWidgetItem(str(key))
rootParent = QtGui.QTableWidgetItem(str(self.dictOfRoots.get(key)))
rootParent.setFlags(QtCore.Qt.ItemIsEnabled)
if rootParent.text() == rootName.text():
rootParent = QtGui.QTableWidgetItem(str("World"))
self.table.setItem(rowNum, columnNum, rootName)
self.table.setItem(rowNum, columnNum+1, rootParent)
rowNum += 1
Any help would be appreciated. Apologies for the lack of code trags, I am not sure where to find them or if this group supports them
Cheers!
Ben