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 :

Afficher des images sur un mur [Débuter]


Sujet :

Qt Quick

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Afficher des images sur un mur
    Bonjour,

    Je viens juste de me mettre à QML et je souhaiterai réaliser un mur contenant des images. Je m'explique:
    Je suis en train de réaliser une vidéothèque et pour cela, j'ai besoin de faire un mur de jaquettes. J'ai une base de donnée qui indique l'emplacement des jaquettes sur le disque et je souhaiterais que le logiciel les récupère pour les disposer comme sur un mur. Ils doivent aller à la ligne quand il y a trop d'élément dans la largeur, etc... un peu comme dans l'explorateur Windows. Je n'ai pas nécessairement besoin d'une page de code toute faite mais juste le cheminement et les éventuels objets à explorer. Je vous remercie par avance.

    Bonne journée.

  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
    Je me répond à moi même partiellement:
    Je pense qu'il faut utiliser un GridView. Pour le reste, voir l'exemple Flickr qui est disponible dans Qt/examples/declarative/Flickr. C'est plus ou moins la même chose.

    Cordialement

  3. #3
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    En effet, c'est bien un GridView qu'il vous faut, avec pour sa propriété "delegate" un composant Image. Ce GridView devra afficher un ListModel contenant les données de chacune des jaquettes.

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  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
    Pendant qu'on y est, j'aurai 2-3 questions concernant les modèles de vues:
    -Qu'est-ce que c'est un modèle de vue concrètement? C'est une manière d'agencer les élément? Et quelles sont les particularités de chacun? Je vois pas bien.
    -Le delegate sert à faire une modèle des objets à ranger c'est ça? Et le listElement sert juste à rentrer les données qui seront utilisées par le delegate?
    -Est-ce que tu connaitrais un bon tuto pour l’interaction QML/C++? Parce que là, j'ai une base de donnée dans laquelle le C++ fait des requettes et donc récupère principalement des QString et des int. Mais comment je l'envoie au QML pour qu'il les affiche? En fait, je vois pas bien comment on passe d'un ou plusieurs QString au ListElement.

  5. #5
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Salut,

    Pour la communication C++/QML, j'avais écrit un petit article il y a longtemps, mais il est à reprendre car incomplet et car il n'y a pas de méthode meilleure que d'autres, seulement des méthodes plus adaptées que d'autres à différentes situations : http://louis-du-verdier.developpez.c...communication/. Pour la communication directe avec du C++, j'avais également donné quelques éléments ici : http://www.developpez.net/forums/d14...n/#post7947917. Dans votre cas, si vous avez une liste simple de chaînes de caractères, vous pouvez passer par une propriété contextuelle de type QStringList. Par exemple :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QStringList list;
    list << "a" << "b" << "c";
    view.rootContext()->setContextProperty("test", list); // avec view, l'instance de l'élément qui affiche le QML

    Utilisation dans le QML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ListView {
        anchors.fill: parent
        model: test
        delegate: Text {
            text: test[index]
        }
    }
    Dans l'approche modèle/vue, le modèle contient uniquement les données tandis que la vue se charge de l'affichage. Un delegate est un composant graphique qui va être créé pour chaque entrée du modèle. Il permet d'utiliser "index" pour avoir l'id de l'élément actuel du modèle affiché, ce qui permet d'en récupérer le texte associé. Dans votre cas, le delegate serait un composant Image, le modèle serait votre propriété contextuelle, et la vue, un composant GridView. Un modèle peut être pas mal de choses : un ListModel QML, une QStringList, QVariantList, dérivée de QAbstractModel, etc.

    N'hésitez pas à demander plus d'informations,
    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #6
    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
    Merci de cette réponse, c'est tout de suite nettement plus clair. J'ai deux questions à propos de votre remarque:
    1) Qu'est-ce qu'une propriété contextuelle? Une propriété je vois, mais que signifie contextuelle?
    2) La variable "index" est-elle une variable définie par la liste ou est-ce qu'on pourrait par exemple faire test[k]?

    Cordialement

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

Discussions similaires

  1. afficher sucsessivement des images sur un div
    Par regh12 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/10/2009, 18h47
  2. afficher des image sur php
    Par sooprano dans le forum Langage
    Réponses: 4
    Dernier message: 15/01/2009, 11h36
  3. Afficher des images comme sur google images
    Par java_developper dans le forum JSF
    Réponses: 8
    Dernier message: 18/09/2007, 11h03
  4. Réponses: 4
    Dernier message: 24/06/2007, 19h27
  5. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 09h27

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