p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre éclairé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : février 2004
    Messages : 283
    Points : 382
    Points
    382

    Par défaut QProxyModel et QTreeView

    Bonjour bonjour,

    Alors voila, à l'origine, j'avais un QTableView qui permettait d'afficher des données avec un modèle perso.
    Le tout était passé par un QSortFilterProxyModel pour pouvoir trier tout ce beau monde (pas besoin de la fonction filtre).

    Maintenant je voudrais rajouter une fonctionalité à savoir que certaines lignes peuvent contenir des sous-lignes, avec les même colonnes.
    J'ai donc pour cela mis en place une QTreeView me permet d'afficher une liste style QTableView mais avec les sous-lignes.

    Dans un premier temps j'ai viré le proxy pour le tri, pour faire marcher tout bien déjà comme ça.

    J'ai du pas mal modifié mon modèle pour gérer les relations parent et tout marche bien sans le tri.

    Maintenant, je ne sais pas trop si le QSortFilterProxyModel est toujours adapté à mes besoins, car j'aimerais pouvoir filtrer uniquement les lignes haut niveau (comme avant), mais sans que cela affecte l'ordre des sous-lignes.

    Quelqu'un sait si le QSortFilterProxyModel est paramétrable à ce point ou si il faut que je me refasse un ProxyModel à la main?

    De plus, quand je met un QSortFilterProxyModel tel quel, mes sous lignes ne s'ouvrent pas forcément bien, le QSortFilterProxyModel peut gérer un modèle en arbre (et dans ce cas j'ai un problème dans mon modèle initial qui n'émerge que quand il y a le proxy par dessus), ou est-ce que c'est déjà pas conçu à la base pour gérer autre chose que des modèles type liste / table.

    Et dans le cas ou un simple QSortFilterProxyModel n'irait pas, le plus simple est de faire un proxy qui hérite de QSortFilterProxyModel ou carrément de QAbstractProxyModel?

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : février 2004
    Messages : 283
    Points : 382
    Points
    382

    Par défaut

    Bon j'ai finis par m'en sortir, si quelqu'un est face à ce problème genre de problème un jour:

    Le QSortFilterProxyModel peut très bien gérer les arbres, mes soucis de sous lignes qui n’apparaissaient pas venait d'un soucis dans le modèle de base.

    Et pour faire en sorte que seules les lignes de premier ordre soient triées, il suffit de redéfinir les méthodes mapToSource et mapFromSource, en appelant que celle de QSortFilterProxyModel dans le cas ou il n'y a pas de parent, sinon de faire un mapping direct via ligne/colonne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/12/2007, 14h16
  2. remplir un Qtreeview
    Par yan500 dans le forum Qt
    Réponses: 6
    Dernier message: 06/12/2007, 18h06
  3. comment tous sélectionner dans un Qtreeview.
    Par yan500 dans le forum Qt
    Réponses: 16
    Dernier message: 05/12/2007, 16h07
  4. QTreeView, QListView et leurs copains
    Par Alouka dans le forum Qt
    Réponses: 2
    Dernier message: 12/01/2007, 08h36
  5. [Kylix] Labels du QTreeView tronqués
    Par Mister Nono dans le forum Kylix
    Réponses: 3
    Dernier message: 05/11/2002, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo