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 Quick Discussion :

Faire un modèle actualisable


Sujet :

Qt Quick

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut Faire un modèle actualisable
    Bonjour,

    Ceci semble être la suite de l'un de mes précédents posts ^^.
    Je cherche à faire une context property actualisable mais je pense pas que les models résoudront mon problème.

    Actuellement, pour afficher mon mur de jaquettes, je récupère les infos de la base de données dans un item "jaquette", puis je le transmet à un model qui envoie le tout au QML au travers d'une context property. Cependant, que se passe-t-il si je modifie la base de données? Par exemple si je rajoute les infos d'un film? Et bien rien car le model ne se met pas à jour sur les données qu'il a reçu. Il fait une copie des données et agit dessus mais pas sur les originaux.

    Comment est-ce que je peux faire?

    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Apparament il faudrait jouer sur le signal "DataChanged". Je vais regarder ça. en attendant si vous avez des réponses ou des précisions n'hésitez pas ^^.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Alors non, ça n'a rien à voir avec "dataChanged". C'est juste pour quand on modifie les données INTERNES du modèle. J'ai essayé aussi avec resetInternalData() mais ça n'a pas d'effet. Je sais pas comment faire...

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Je pense être proche de la solution. J'ai besoin de votre aide pour me donner le coup de pouce final. J'ai créé une fonction qui rerempli le modèle lors de son appel. Voila le code:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void JacketModel::changeData()
    {
        bdd database;
        m_jackets.clear();
        m_jackets=database.listJackets(); //remplit m_jackets avec une liste de jaquettes
        emit dataChanged(QModelIndex(), QModelIndex());
    }

    J'avais utilisé dataChanged() car je croyais que ça émettrait même avec un mauvais index. J'avais tort, il lui faut absolument un index valide. Il me faut donc un autre signal qui remette à jour entièrement la vue mais je ne sais pas lequel...

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Bon et bien, après moultes essais j'ai finalement réussi à faire en sorte que le modèle se mette à jour sur la base de données avec ce code:

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void JacketModel::changeData()
    {
        beginResetModel();
        bdd database;
        m_jackets.clear();
        m_jackets=database.listJackets();
        endResetModel();
    }

    Les signaux à appeler pour reset le modèle étaient beginResetModel() et endResetModel().

    Cordialement

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2011, 11h59
  2. comment faire fonctionner les macros d'un modèle Word (.dot)?
    Par chtibreizh62 dans le forum VBA Word
    Réponses: 2
    Dernier message: 18/12/2006, 14h18
  3. [VBA-W]Comment faire suivre les macros d'un modèle?
    Par gusrom86 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/02/2006, 10h26
  4. [3D] Faire tourner un modèle 3D
    Par Pedro dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 27/01/2006, 00h16
  5. [win XP] obliger de faire actualiser
    Par Ickou dans le forum Windows XP
    Réponses: 1
    Dernier message: 09/11/2005, 21h50

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