2017-05-26 6 views
0

Dans mon projet Qt 5.6.2, j'ai remarqué que si vous double-cliquez sur un élément QTreeView (la partie flèche réelle, pas le texte de l'élément), le premier clic bascule l'état étendu, et le le deuxième clic ne fait rien.Double-cliquez sur QTreeView Développez Élément Flèche

Je voudrais plutôt le deuxième clic pour basculer à nouveau l'état étendu.

J'ai essayé treeView->setExpandsOnDoubleClick(false); mais le comportement est toujours le même car il semble ne pas affecter du tout la partie flèche de l'élément. Il semble que Qt décide pour moi comment la flèche devrait réagir à un double-clic indépendamment de la propriété expandsOnDoubleClick. Comment puis-je résoudre ça?

(Note:.. Ce comportement n'existait pas dans Qt 5.0.2 Incertain sur les versions de Qt intermédiaires)

+0

http://sscce.org/ –

+0

Honnêtement si vous avez besoin d'un sscce pour un QTreeView simple, alors il est probable que vous ne serez pas en mesure d'aider. C'est juste un vieux QTreeView. – mrg95

+0

Vous dites "Je voudrais plutôt le deuxième clic pour basculer à nouveau l'état étendu" - vraiment? Ou voulez-vous dire que le premier clic ne devrait rien faire et que seul le second/double clic devrait faire n'importe quoi: par ex. développer/réduire l'élément? –

Répondre

0

j'ai pu résoudre ce problème en sous-classement QProxyStyle et la vérification de l'indice de style SH_ListViewExpand_SelectMouseType et en retournant une valeur de 3 au lieu de la valeur par défaut 2.

class MyProxyStyle : public QProxyStyle 
{ 
public: 
    int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const 
    { 
     if(hint == QStyle::SH_ListViewExpand_SelectMouseType) 
      return 3; 
     return QProxyStyle::styleHint(hint, option, widget, returnData); 
    } 
}