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

Discussion :

Qt Problème de QSlider

  1. #1
    Membre du Club Avatar de Dodin
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 104
    Points : 66
    Points
    66
    Par défaut Qt Problème de QSlider
    Bonjour à vous !

    Voici mon problème, je bosse avec Qt + Ogre 3d. Je récupère la durée d'une animation d'un personnage, que j'applique à mon QSlider en valeur max. Celle-ci est de 1,4 secondes. Le problème étant de régler mon step avec des valeur si petites...

    Car la méthode singleStep ne prend que des (int). Je voudrais par exemple un step de 0,1 . Avez-vous des idées pour me débloquer ?

    Merci à vous et bonne journée.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    Il suffit de diviser par 10 (ou par 100, ou autre) la valeur retournée par QSlider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double t = 0.1 * slider.value;

  3. #3
    Membre du Club Avatar de Dodin
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Re bonjour,

    Merci pour ta réponse !

    Mais en fait le compilateur me dit, qu'il faut un int....

    Voici mon bout de code avec la division :
    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
     
    Ogre::AnimationState *mAnimState;
        mAnimState = qOgreGL->pAnimationStatePlayer;
     
        float dureeAnimation = mAnimState->getLength();
        qDebug() << "------------ time anim : "<< dureeAnimation ;
     
         //sliderAnim->setRange(0, dureeAnimation);
         sliderAnim->setRange(0, dureeAnimation);
         sliderAnim->setValue(0);
         sliderAnim->singleStep(dureeAnimation / 10);
         //sliderAnim->setPageStep(dureeAnimation / 100);
     
        qDebug() << "------------ time anim : "<< dureeAnimation ;
        qDebug() << "------------ time anim : "<< (dureeAnimation / 100) ;

    Et je viens aussi de me rendre compte que la méthode pour mettre une valeur au Slider passse aussi par un setValue(int). Donc je me retrouve aussi bloqué pour mettre à jour mon slider....
    Vu que celle-ci vont de 0.0 à 1.4, j'aurai lors de la mise en valeur de mon slider 0 ou 1... Il faudrait que je trouve un moyen, de lui passer des float.

    Merci pour ta patience !

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Il ne s'agit que d'une question d'échelle.

    Si tes valeurs vont de 0.0 à 1.4, utilise des valeurs pour ton slider entre 0 et 14 (x10) ou si tu as besoin d'une précision plus grande entre 0 et 140 (x100).

    Ça devrait marcher en multipliant au lieu de diviser.

  5. #5
    Membre du Club Avatar de Dodin
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Re re bonjour,

    Bon problème résolu, merci johnlamericain !

    Je n'y avais pas pensé du tout mais en multipliant ma valeur pour l'avoir en milliseconde...je n'ai plus eu de problème de virgule. Ainsi les int correspondent bien car j'ai jusqu'a 1400 valeurs et tout va bien dans le meilleur des monde .

    Voici 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
     
     Ogre::AnimationState *mAnimState;
        mAnimState = qOgreGL->pAnimationStatePlayer;
     
        float dureeAnimation = mAnimState->getLength();
        qDebug() << "------------ time anim : "<< dureeAnimation ;
     
         //sliderAnim->setRange(0, dureeAnimation);
         sliderAnim->setRange(0, (dureeAnimation*100));
         sliderAnim->setValue(0);
         sliderAnim->singleStep();
     
        SliderUPDATE();
    Thanks John !

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

Discussions similaires

  1. Probléme avec QSlider
    Par lisco dans le forum Qt
    Réponses: 6
    Dernier message: 25/08/2009, 01h04
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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