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 :

sauver et restaurer QModelIndex


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut sauver et restaurer QModelIndex
    Salut,

    J'ai une tree widget et je veux sauver/restaurer le item selectionné.

    Pour sauver le Item j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index = QItemSelectionModel::currentIndex();
    et pour restaurer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QItemSelectionModel::select(index,QItemSelectionModel::ClearAndSelect);
    ceci fonctionne très bien, mais j'aimerai sauver le QModelIndex dans un fichier et le restaurer plus tard. J'ai essayé de sauver les row et column de la façon suivante:
    pour sauver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	int row = index.row();
    	int column = index.column();
    mais chaque fois que le item selectionné n'est pas dans la première colonne de l'arbre, la valeur de row et column est egale à 0 !

    pourquoi ? est ce qu'il y'aurai une meilleure façon de sauver un QModelIndex dans un fichier ?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Salut encore,

    Bon j'ai fini par comprendre que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         int row = index.row();
         int column = index.column();
    donne les row et column par rapport à l'index parent.
    Mais comment trouver le index et le row absolues alors ?

    Je pense que ca se fait en bouclant sur tous les parent de l'index actuel et en additionnant a chaque fois la valeur de row et column, mais il me semble que c'est un peu cheap comme solution et il devrait exister une meilleure.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Comment créé tu ton arbre?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Salut,

    Malheuresement c'est pas moi qui la crée. Pour interagir avec j'ai accès à son QItemSelectionModel et QAbstractItemModel avec lesquels je peux retrouver le currentIndex et ses parents.
    Dans mon cas, il ne peux y avoir qu'une seule colonne associé à une ligne et donc column vaut toujours 0.
    J'ai résolu le problème de la façon suivante:
    soit: model mon QAbstractItemModel et itemSelectionModel mon QItemSelectionModel.
    Pour sauver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	QList<int> pipelineSelection;
    	QModelIndex parent = model->index(0,0);
    	QModelIndex index = itemSelectionModel->currentIndex();
     
    	while(index != parent)
    	{
    		pipelineSelection.push_front(index.row());
    		index = index.parent();
    	}
    Pour restaurer je lit mon fichier et je reconstruit pipelineSelection, par la suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	QModelIndex parent = model->index(0,0);
    	QModelIndex index;
     
    	for(int i = 0; i < pipelineSelection.size(); i++)
    	{
    		index = model->index(pipelineSelection[i],0,parent);
    		parent = index;
    	}
    	itemSelectionModel->select(parent,QItemSelectionModel::ClearAndSelect);
    Malgrès que c'est pas trop directe comme solution mais ca fonctionne bien

  5. #5
    Membre très actif
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Par défaut
    QSettings devrait répondre à tes attentes.

    Il s'agit de sauvegarder et restaurer n'importe quelle information très facilement et de manière cross-plateformes.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Citation Envoyé par FloMo Voir le message
    QSettings devrait répondre à tes attentes.

    Il s'agit de sauvegarder et restaurer n'importe quelle information très facilement et de manière cross-plateformes.
    Salut,

    En survolant rapidement QSetting, il me semble qu'il n'est pas possible de convertir un QSetting en QString ou XML et ajouter ca valeur a mon fichier ou je sauve mes données. Le format que j'utilise est XML et je veux convertir mon QSetting concernant le QModelIndex en texte ou XML pour pouvoir l'ajouter à un endroit précis de mon fichier.
    J'ai vu qu'il existe un module Qt XML mais je ne sais pas encore s'il fait ce que je veux et s'il est accessible via ma version open source Qt4.3.

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

Discussions similaires

  1. Sauver et restaurer des informations contenues dans un fichier
    Par lilimilou29 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 14/06/2007, 20h08
  2. Sauver une StringGrid dans un fichier
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/12/2003, 14h52
  3. Impossible de restaurer une base
    Par bencot dans le forum InterBase
    Réponses: 5
    Dernier message: 27/11/2003, 11h12
  4. Sauvegarde / Restauration
    Par Sitting Bull dans le forum Administration
    Réponses: 2
    Dernier message: 13/06/2003, 13h46
  5. sauver une base
    Par phil_java dans le forum Administration
    Réponses: 3
    Dernier message: 07/03/2003, 17h08

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