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 :

Comment faire défiler des images avec un curseur de défilement ?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Comment faire défiler des images avec un curseur de défilement ?
    Bonjour,
    J'ai un dossier avec plusieurs fichier nommé img_1.png, img_2.png etc .. qui sont des images en fonction du temps.
    J'ai une fenêtre qui ressemble a ça
    Nom : Capture du 2017-07-17 10-46-40.png
Affichages : 893
Taille : 52,9 Ko
    Ce que j'aimerais maintenant c'est que pour chaque valeur de mon Slider, j'ai une image différente d'affiché

    Pour le moment je charge une seule image comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QLabel *image = new QLabel(&fenetre);
    QPixmap *pixmap_img = new QPixmap("./data_out/img/img_0.png");
    Comment je peux connecter un Slider avec plusieurs noms de fichier ? Et comment fonctionne ensuite la construction des images ?

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Il faut déjà commencer par connecter le signal du slider à un slot dans lequel tu pourras changer l'image affichée. Pour l'instant tu peux te contenter de juste afficher quelque chose dans la console ou de mettre un breakpoint avec ton débogueur pour t'assurer de la bonne connection signal / slot. As-tu réussi à faire cela ?

    Une fois que c'est fait, tu détermines le nom du fichier image, tu le charges et tu changes le pixmap de ton QLabel (http://doc.qt.io/qt-5/qlabel.html#pixmap-prop).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut
    Avec un tuto j'ai pu connecter le slider avec une progressBar par exemple mais je n'arrive pas à voir qu'elle fonction utiliser pour voir mon image

    Faut-il que je la créé ? avec un argument de type int qui serais mon indice d'image ?
    Et c'est dans cette fonction que je change le pixmap de mon image ?

    Edit:

    J'ai écrit cette petite fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void MaFenetre::indexChanged(int value)
    {
        QLabel *image = new QLabel(this);
        QString chemin = "./data_out/imgState/imgState_";
        QPixmap *pixmap_img = new QPixmap(chemin.append(value).append(".png"));
    }
    Je l'appel comme ceci dans mon main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      QObject::connect(m_slider, SIGNAL(valueChanged(int)), image, SLOT(indexChanged(int))) ;
    Mais j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect: No such slot QLabel::indexChanged(int)

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Quelle version de Qt utilises-tu ? Dans les versions récentes, la manière de connecter signal et slot est plus simple. Voir http://doc.qt.io/qt-5.6/signalsandslots.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void MaFenetre::indexChanged(int value)
    // ...
    QObject::connect(m_slider, SIGNAL(valueChanged(int)), image, SLOT(indexChanged(int)))
    Ton slot est une fonction membre de MaFenetre, je doute que ton image soit de type MaFenetre. D'ailleurs, ton message d'erreur me fait croire que image est un QLabel

    avec un argument de type int qui serais mon indice d'image ?
    Et c'est dans cette fonction que je change le pixmap de mon image ?
    Oui c'est l'idée. D'ailleurs, pourquoi recréer un label ? Il existe déjà, il juste changer ce qu'il affiche. Quand à la question de savoir ce que prend ton slot en paramètre, c'est une bonne question. Une idée simple est peut-être que l'entier passé en paramètre soit l'indice à accoler au nom générique de fichier. Au démarrage de ton application, tu peux déterminer combien d'images tu as et changer la plage couverte par le slider en conséquence.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut
    Merci pour ta réponse très complète

    J'utilise la version 5 de Qt mais sans utilisé d'IDE (juste un CMakeListe)

    OK, c'était un peu flou sur certains points. Mon QLabel n'est en faite qu'un simple "cadre" ou je peux y placer des QPixmap par exemple ?

    C'est exactement ce que je voulais faire, j'ai un variable qui me donne le nombre d'image que je vais produire donc j'ai cette ligne la pour mon slider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_slider->setRange(0,nombreImages);
    Et ensuite mes images sont toute nommé img1,img2 etc

    Il me reste un point d'ombre, comment le QLabel va changer sachant qu'il se trouve dans mon main et que le QPixmap se trouve dans ma fonction qui ne retourne rien ?
    Et pour la connexion je pense voir, il ne faut pas que je lui demande un QLabel mais quelque chose de type MaFenetre

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    MaFenetre contient un QLabel, 'image' (qui est ce QLabel) donc un champ de ta variable 'fenetre'. Puisque tu peux accéder à ce champ, tu peux utiliser les méthodes qu'il possède. Notamment celle que je t'ai donné plus tôt : http://doc.qt.io/qt-5/qlabel.html#pixmap-prop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_slider->setRange(0,nombreImages);
    C'est à ça que je pensais

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

Discussions similaires

  1. Faire défiler des images avec des boutons
    Par vanilou dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 27/06/2012, 14h54
  2. Comment faire défiler plusieurs images avec effet de transition
    Par eyango dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/02/2008, 16h33
  3. Comment faire défiler des images comme sur le site suivant
    Par tidus_6_9_2 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2008, 14h32
  4. [PHP-JS] Comment faire défiler des images en php ?
    Par innova dans le forum Langage
    Réponses: 4
    Dernier message: 19/11/2006, 12h09
  5. Comment faire défiler une image dans un DBImage
    Par kolac dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/04/2006, 13h45

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