QT QItemSelectionModel zum Ignorieren von Spalten?

Ich versuche, die Auswahl eines Baums auf eine bestimmte Spalte zu beschränken.

Ich benutze stark Delegierte, um benutzerdefinierte Verhaltensweisen pro Element und Spalte, Editoren usw. zu erstellen. Ich hatte gehofft, dass ich dies irgendwie von einem Delegierten aus tun kann, indem ich ein Ereignis oder ähnliches blockiere. Das Problem ist, ich denke, ich müsste eine vollständig benutzerdefinierte Lösung erstellen, die erweiterte Auswahl imitiert.

Nach vielen Recherchen und sehr wenigen Beispielen scheint es jedoch so, als ob ich ein benutzerdefiniertes QItemSelectionModel in meiner Baumansicht haben möchte. Ist diese Annahme richtig?

Wie erstelle ich ein benutzerdefiniertes QItemSelectionModel, das den erweiterten Auswahlmodus verwendet, es mir jedoch ermöglicht, eine Auswahl zu ignorieren oder zurückzusetzen, wenn sie sich nicht in einer bestimmten Spalte befindet? Mit anderen Worten, das Klicken auf eine andere Spalte sollte die Auswahl nicht ändern (sollte nicht aktivieren oder deaktivieren)

Ich kann das Auswahlmodell hinzufügen, sobald ich es habe. Ich bitte um Hilfe bei der Implementierung der abgeleiteten Klasse (sofern dies nicht mit einem verbundenen Signal möglich ist).

Ich benutze Python, würde aber jede Hilfe schätzen.

Vielen Dank,

[EDIT:] Ich fand diese ähnlichen Fragen:http://lists.qt.nokia.com/pipermail/qt-interest/2010-September/027647.html

"Die Unterklasse QItemSelectionModel und die Neuimplementierung wählen beide Methoden aus, um das gewünschte Verhalten zu erzielen. Ignorieren Sie einfach die Teile von Bereichen mit Spalte> 0. ... oder implementieren Sie Flags () einfach neu, damit das Element nicht ausgewählt werden kann. Ich weiß nicht, ob das irgendwelche Nebenwirkungen haben wird. "

Ich habe versucht, Flags auf meinem QTreeWidgetItem erneut zu implementieren, aber es wurde nie aufgerufen:

def flags(self, index):
    print index.column()
    return super(DDOutlinerBaseItem, self).flags(index)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage