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 :

Exposer des modèles C++ imbriqués à QML


Sujet :

Qt Quick

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 704
    Points : 188 990
    Points
    188 990
    Par défaut Exposer des modèles C++ imbriqués à QML
    Bien que ce cas d'imbrication puisse sembler rare en pratique, le fait que XML n'ait pas de support direct pour les modèles arborescents rend l'utilisation de modèles C++ imbriqués très utile pour obtenir une structure en arbre.

    Un exemple de cas pratique où les modèles imbriqués sont utiles est le stockage de conversations Facebook. Un mur Facebook est constitué de notifications sociales (modèle racine), chacun pouvant avoir des commentaires (modèles internes).

    Exposer des modèles C++ imbriqués à QML

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 118
    Points : 176
    Points
    176
    Par défaut donner un parent C++ à l'object passé à QML
    Merci, cette technique m'a été très utile.

    Mais juste un truc: il faut absolument donner un parent C++ à m_comment quant on le passe à QML via une fonction 'QObject *function()'. Sans cela j'obtenais des plantages bien mystérieux dans mon projet. En fait, c'était le ramasse-miète javascript qui détruisait mon object m_comment dans QML, sans que je ne lui ai demandé, car il pensait qu'il était orphelin.
    J'ai même cru à un bug QtQuick au début, car je n'arrivait vraiment pas à comprendre ce qu'il ce passait. Je voyais juste qu'en utilisant mon application, à un moment donnée, mon object m_comment (enfin, son équivalent dans mon projet) était subitement détruit, sans arriver à en comprendre la raison et aboutissant au crash de mon programme.

    Mais en fait, tous est expliqué là:
    http://qt-project.org/doc/qt-5/qtqml...data-ownership

    Donc dans l'exemple, le FIXME du constructeur de SocialUpdateItem est important. Ça doit être quelque chose comme ça:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    m_comment = new CommentClass(this)
    L'autre alternative est d'appeler setObjectOwnership:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    view.setObjectOwnership(m_comment, QQmlEngine::CppOwnership);

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    Merci du retour.

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

Discussions similaires

  1. [POI]Utiliser des modèles de document, c'est possible ?
    Par hugo123 dans le forum Documents
    Réponses: 5
    Dernier message: 04/09/2006, 13h52
  2. Modéliser des modèles de documents
    Par raoudi57 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/11/2005, 21h23
  3. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 03h15
  4. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 13h22

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