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 :

Afficher une grille d'images à partir d'un QVector


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Points : 51
    Points
    51
    Par défaut Afficher une grille d'images à partir d'un QVector
    Bonjour,

    Je dispose d'un vector à 2D de unsigned.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vector<vector<unsigned> > vecteur;
    Je voudrais parcourir ce vector et en fonction de la valeur contenue dans la case du vector, afficher dans une fenêtre une grille d'images.
    Je m'explique:
    Si mon vecteur fait 10 cases sur 10, je parcours les 100cases du vecteur et j'affiche dans ma fenêtre (représenté par une grille) pour chaque case du vecteur l'image qui y correspond.
    Donc pour vecteur[0][0] j'affiche l'image tout en haut à gauche.
    Puis pour vecteur[0][1] j'affiche l'image à la droite de l'image affichée avant) donc sur la même ligne mais la deuxième colonne, etc.

    Je sais comment insérer une image dans un QLabel(setpixmap), mais je ne sais pas comment créer une grille de QLabel (d'images dans ce cas-ci)
    Pouvez vous m'aider?

    Merci!

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Il faut faire un truc du genre :
    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
     
    //dans la constructeur
    QGridLayout layout;
    for(int i = 0;i<10;i++)
    for(int j =0;j<10;j++)
    {
    layout.addWidget(new QLabel(), i, j);
    }
    this->setLayout(&layout);//this est du type qwidget
     
    //dans ta fonction de mise à jour
    for(int i = 0;i<10;i++)
    for(int j =0;j<10;j++)
    {
    QLabel* myLabel = qobject_cast<QLabel*>(this->layout()->itemAtPosition(i,j)->widget());
    QPixmap myPix ... //chargement du QPixmap à partir de ton vecteur[i][j]
    myLabel->setPixmap(myPix);
    }
    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,
    Je suis désolé de déterrer ce vieux post mais je souhaite faire exactement la même chose et merci à Gulish pour son aide
    J'ai fait comme il a dit mais dans ma fonction le "itemAtPosition" n'est pas reconnu
    Voila le message d'erreur de QT :
    erreur : 'class QLayout' has no member named 'itemAtPosition'
    Pourriez vous m'aider ??? Merci d'avance

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Oui c'est une fonction de QGridLayout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QLabel* myLabel = qobject_cast<QLabel*>(qobject_cast<QGridLayout*>(layout())->itemAtPosition(i,j)->widget());
    Dans l'absolu il vaut mieux vérifier que qobject_cast ne renvoie pas 0...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup troudhyl, ça fonctionne mieux comme ça
    J'ai juste 2 petites questions pour en finir avec cette grille,

    1. j'ai créé ma fonction de mise à jour comme l'a indiqué Gulish et je lui fais renvoyé mon vector de vector,est-ce bien cela ?

    2. Je n'ai toujours pas compris comment charger une image à partir de mon vector. Comment procéder si je veux afficher tel image sur la case [1][1] par exemple, j'ai regardé dans la doc QT mais rien ne m'interpelle .

    Merci de votre patience et de votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...euhh...tu peux utiliser cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    classimage tonimage ;
    tonimage = objqvector.value(n) ;
    //int n ;
    Voici deux liens utiles sur le même site :

    http://qt.developpez.com/doc/4.7/qpair/
    http://qt.developpez.com/doc/4.7/qvector/

Discussions similaires

  1. Afficher une grille redimensionnable sur une image
    Par darkman19320 dans le forum Qt Quick
    Réponses: 4
    Dernier message: 09/04/2013, 16h09
  2. Afficher un flux d'images à partir d'une caméra IP
    Par FlorianDeParis dans le forum Débuter
    Réponses: 9
    Dernier message: 08/03/2013, 00h01
  3. Afficher une grille d'image
    Par maryem_kh dans le forum Débuter
    Réponses: 0
    Dernier message: 17/02/2012, 18h09
  4. [VB6]Afficher une grille de Sudoku
    Par epaminondas dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 07/03/2006, 17h36
  5. Réponses: 4
    Dernier message: 14/10/2003, 08h58

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