Хорошо, разобрался (в основном случайно).
Так как я делал подключения в init , но позже только устанавливал модель для этого QTreeView, не было допустимого selectionModelна месте.
Чтобы заставить его работать, мне нужно было сделать два изменения:
1) Излучающий объект должен был быть изменен, чтобы быть selectionTodel для QTreeView.Я не знаю почему, но некоторые (редкие) примеры в Интернете предположили, что это может иметь место
и
2) Мне пришлось переопределить метод setModel в QTreeView так, чтобыон вызывает метод setModel суперкласса, а затем устанавливает соединения.
Таким образом, новый код выглядит следующим образом:
class ShaderDefTreeView(QtGui.QTreeView):
"""
Overrides the QTreeView to handle keypress events.
"""
#---------------------------------------------------------------------------
def __init__(self, parent=None):
"""
Constructor for the ShaderDefTreeView class.
"""
super(ShaderDefTreeView, self).__init__(parent)
#---------------------------------------------------------------------------
def setModel(self, model):
super(ShaderDefTreeView, self).setModel(model)
self.connect(self.selectionModel(),
QtCore.SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
self.store_current_selection)
#---------------------------------------------------------------------------
def store_current_selection(self, newSelection, oldSelection):
print "changed"