IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Déplacer/réordonner des QListWidgetItem


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut Déplacer/réordonner des QListWidgetItem
    Bonsoir

    J'ai un petit soucis Qt avec un QListWidget et ses QListWidgetItem.
    J'ai pour des raisons perso besoin, selon certains évènements extérieurs, de réordonner les QWidgetItem qui sont dans mon QListWidget.

    J'ai donc créé un tableau qui contient tous mes QListWidgetItem. Au départ je crée le QListWidget puis j'y mets tous les item du tableau.
    Puis quand l'évènement arrive, je réordonne le tableau par un sort() associé à une fonction de comparaison dédiée qui me permet de réordonner mes items selon mes caractéristiques. Et je veux les remettre ensuite dans le QListWidget dans le bon ordre et là, impossible.
    J'ai essayé de faire removeItemWidget en boucle sur tous mes item puis les remettre dans l'ordre du tableau => ils se remettent toujours dans l'ordre qui était le leur la première fois qu'ils ont été positionnés. J'ai tenté un addItem, un insertItem(i) avec i l'indice de l'item dans le tableau => rien à faire.
    Pourtant le tableau est bien dans le bon ordre. J'ai même placé un QMessageBox dans la boucle => je vois bien les items arriver dans le bon ordre MAIS ensuite je les vois se positionner dans le QListWidgetItem comme ils étaient à l'origine.

    J'ai aussi examiné chaque méthode de la QListWidget. J'ai eu un petit espoir en voyant qu'elle possédait elle aussi un sort mais c'est un simple sort selon le texte de l'item et non selon un choix personnel.

    Bref est-ce que ce que je veux faire est possible ? Est-ce que je m'y prends mal ?

    Pour l'instant j'ai trouvé une solution palliative qui me satisfait moyennement. Quand le tableau est trié, je fais un clear() sur le QListWidget puis je recrée les item dans le bon ordre. Mais je trouve pas ça super tiptop...

    Merci à tous
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Bonsoir,
    le setSortingEnabled(false) n'a pas d'effets ?

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par abdou57 Voir le message
    Bonsoir,
    le setSortingEnabled(false) n'a pas d'effets ?
    Salut
    Déjà je ne comprends pas. Normalement, pour activer le sort, il faudrait mettre setSortingEnabled(True) et non false.

    Mais comme je l'ai dit, la méthode sort() du QListWidget trie les items selon le texte de l'item et non selon ton algo perso...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Bonsoir,
    Citation Envoyé par Sve@r
    je réordonne le tableau par un sort() associé à une fonction de comparaison dédiée qui me permet de réordonner mes items selon mes caractéristiques. Et je veux les remettre ensuite dans le QListWidget dans le bon ordre et là, impossible.
    j'ai compris que vous triez les items en dehors du QListWidget, donc si avant de les remettre dans le QListWidget vous faites un clear et setSortingEnabled(false)
    qu'est ce que ça donne ?

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par abdou57 Voir le message
    Bonsoir,

    j'ai compris que vous triez les items en dehors du QListWidget, donc si avant de les remettre dans le QListWidget vous faites un clear et setSortingEnabled(false)
    qu'est ce que ça donne ?
    Le pb du clear() c'est que ça vide les item mais aussi que ça les détruit physiquement (ça les supprime de la mémoire). Donc on en arrive à ma solution de contournement où effectivement je fais un clear() puis je les recrée. Ca marche mais je trouve pas cette solution super classe...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Salut
    Déjà je ne comprends pas. Normalement, pour activer le sort, il faudrait mettre setSortingEnabled(True) et non false.

    Mais comme je l'ai dit, la méthode sort() du QListWidget trie les items selon le texte de l'item et non selon ton algo perso...
    Si, car les items sont comparés entre eux avec l'opérateur '<' de la classe QListWidgetItem qui est virtuel donc prévu pour être redéfini par le programmeur.

    Citation Envoyé par Sve@r Voir le message
    J'ai essayé de faire removeItemWidget en boucle sur tous mes item puis les remettre dans l'ordre du tableau => ils se remettent toujours dans l'ordre qui était le leur la première fois qu'ils ont été positionnés.
    A mon avis c'est takeItem() qu'il faut utiliser, removeItemWidget() étant autre chose.
    En l'absence de tri, takeItem() suivi de insertItem() au bon endroit devrait fonctionner.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2008, 17h05
  2. FrameWork .NET : gérer/réordonner des collections
    Par temoanatini dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/04/2008, 12h03
  3. Réponses: 10
    Dernier message: 02/01/2008, 23h02
  4. Déplacer automatiquement des mails
    Par oc_alex86 dans le forum VBA Outlook
    Réponses: 13
    Dernier message: 06/11/2007, 11h29
  5. Optimisation script pour réordonner des N° de Lots
    Par polemoss dans le forum MySQL
    Réponses: 1
    Dernier message: 06/06/2007, 18h37

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