2010-11-09 24 views
2

J'utilise PyQt4 et QTreeView (bien que cela puisse aussi bien s'appliquer directement à qt).qt: Je voudrais désactiver les raccourcis clavier automatiquement configurés pour un QTreeView

À l'heure actuelle, il existe des raccourcis clavier par défaut qui contrôlent l'expansion/la réduction des branches à l'aide des flèches droite et gauche. Malheureusement, ces fixations ne sont pas idéales et j'aimerais les désactiver. Je n'ai pas été capable de comprendre comment faire cela. Est-ce que quelqu'un sait comment désactiver (ou réaffecter) les raccourcis clavier par défaut sur un QTreeView?

+0

Quelles sont ces clés? Les flèches ou ...? –

+0

Oui, les flèches sont problématiques car je veux naviguer avec elles, mais elles continuent à développer ou à réduire les lignes (plutôt de manière inattendue) à la place. – bvz

Répondre

4

Il y a deux options possibles pour vous: 1) réimplémentez la keyPressEvent de QTreeView et vérifier si la touche enfoncée sont soit Qt::Key_Up ou Qt::Key_Down.

2) Vous pouvez installer un eventFilter et vérifier si l'événement est un QEvent::KeyPress et que la clé correspond à Qt::Key_Up ou Qt::Key_Down. Je ne connais pas PyQt donc je ne peux pas vous donner de code en Python, mais j'espère avoir été assez clair.

+0

Cela semble assez clair, merci. Donc, une fois que je ré-implémente le keyPressEvent (quelque chose que je prévois de faire de toute façon parce que je veux changer un autre comportement), je devrai déplacer manuellement la sélection, non? – bvz

+0

Oui, ça devrait être ça. – Live

+0

Désolé d'être dérangé, mais pourriez-vous me montrer la bonne façon de déplacer manuellement la sélection? Je suis dans le keyPressEvent du QTreeView et intercepte avec succès la touche gauche de la touche. J'ai réussi à construire un nouveau QModelIndex qui fait référence à la cellule correcte, mais je n'arrive pas à comprendre comment QTreeView utiliser réellement cet QModelIndex pour sélectionner la cellule appropriée. – bvz