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 :

Liaison lors de l'utilisation d'une ListView avec Loader


Sujet :

Qt Quick

  1. #1
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Liaison lors de l'utilisation d'une ListView avec Loader
    Bonjour,

    Je développe un composant QML qui est composé d'une listView dans lequel le delegate est un loader.
    Tout ceci marche nikel, à une exception pret: je n'arrive pas à modifier dynamiquement les proprerty de mes composant charger dans le loader.
    Je vous donne une version simplifier de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    //composantPrincipal.qml
    ListView{
    id:lvm
    model:modelCPP
    delegate{
     Loader{
      source:"monComposantSecondaire.qml"
      onLoaded{
        item.property1=model.modelData.propertyState
      }
     }
     
    onEvent:{
     lvm.model[0].propertyState=2
    lvm.model[0].propertyStateChange()
    }
     
    }
     
     
     
    //monComposantSecondaire.qml
     
    Item{
    property property1
     
    onProperty1Changed:{
    doSomething...
    }
     
     
     
    }



    Explication:
    lvm.model[0].propertyState=2 ===> modifie le model mais mon composant secondaire n'est jamais au courant qu'il y à eu une modification.
    Il ne se met donc jamais a jour, et ne passe jamais dans la fonction : onProperty1Changed()

    Pourquoi? Si vous avez la réponse, une piste, une suggestion je suis preneur...

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    Bonjour,

    Si votre composant est défini dans un autre fichier, il devrait être possible d'utiliser directement la référence à model.modelData.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Item{
    property var property1: model.modelData.propertyState
     
    onProperty1Changed:{
    doSomething...
    }
    Mais je ne pense pas que cela soit l'idéal en terme d'architecture car cela limiterait l'utilisation du composant pour ce cas spécifique.

    Un autre possibilité, à tester, est d'utiliser la méthode Qt.binding():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Loader{
      source:"monComposantSecondaire.qml"
      onLoaded{
        item.property1=Qt.binding(function() { return model.modelData.propertyState })
      }
     }
    Je ne suis pas sûre du comportement de Qt.binding() avec l'utilisation de modelData et je n'ai malheureusement pas le temps de tester.


    Le sujet est abordé dans la doc de Loader: Using a Loader within a View Delegate

  3. #3
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Yes!!!! la solution du QT.binding marche nikel!!!
    Et elle est de loin la plus simple dans mon cas de figure, ou je modifie "directement" le model (qui est un objet C++).
    Merci beaucoup.

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

Discussions similaires

  1. Erreur exécution lors de l'utilisation d'une liste déroulante
    Par nomade333 dans le forum Modélisation
    Réponses: 3
    Dernier message: 29/03/2008, 15h28
  2. erreur lors de l'utilisation d'une datasource
    Par ceriise dans le forum Struts 1
    Réponses: 8
    Dernier message: 04/10/2007, 22h43
  3. Erreur de numérotation des images lors de l'utilisation d'une référence
    Par mobi38 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 9
    Dernier message: 03/09/2007, 16h36
  4. Bug lors de l'utilisation d'une fonction dans une macro.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2007, 14h35
  5. [.NET 2.0] Erreur lors de l'utilisation d'une application .NET
    Par Jérôme Lambert dans le forum Framework .NET
    Réponses: 6
    Dernier message: 21/11/2006, 15h45

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