[PyQt] selectionChanged or currentChanged in QTreeView

Hans Meine meine at informatik.uni-hamburg.de
Thu Oct 7 08:09:55 BST 2010


Am Donnerstag 07 Oktober 2010, 00:40:28 schrieb danny:
> My app constructs a tree by drag and drop. When I drop a node, I
> immediately make that node current and edit it's text. The execution order
> seems to selectionChanged, then currentChanged. The activated signal never
> fires  at all.

activated = double-click / enter, used e.g. as a shortcut for the default 
action (opening a file / open property dialog)

current = "cursor", there's always *one* current item (not necessarily 
selected; in the widget style I use it is marked with a dotted frame)

selection = interacts with selectionMode and several other variables, complex 
concept that can contain one or more items, or be disabled altogether

> FWIW, in opposition to what you say, selectionChanged and
> currentChanged always seem to fire together. I have not yet seen a case
> where only one fires.

That's because of your selectionMode.  For instance, you can make some items 
unselectable, and still move the cursor over all items (currentChanged); the 
selection will "lag" behind until you reach a selectable item 
(selectionChanged again).

Anyhow, I would use the currentChanged signal if you're interested in a single 
currently highlighted item, or activated if you connect to more expensive / 
interruptive operations that should be more explicitly activated.

HTH,
  Hans


More information about the PyQt mailing list