Bonjour,

En utilisant QDial, j'ai été confronté au problème suivant :

le potentiomètre, fait un tour complet tant que 'on ne le lâche pas et passe donc de l'état max (à droite) à l''état minimum (à gauche) quand on continue de le tourner.

De ce que j'ai trouvé sur Internet, il est recommandé de surcharger QDial. J'ai trouvé une autre façon de faire, en utilisant le signal actionTriggered.

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
19
 
volume=new QDial;
volume->setValue(50);
connect(volume, SIGNAL(actionTriggered(int)), this, SLOT(traitement_dial(int)));
 
void traitement_dial(int val)
{
  if (val==QAbstractSlider::SliderMove)
  {
    if (volume->value()==volume->maximum() && volume->sliderPosition()<volume->maximum()-1)
    {
      volume->setSliderPosition(volume->maximum());
    }
    else if (volume->value()==volume->minimum() && volume->sliderPosition()>volume->minimum()+1)
    {
      volume->setSliderPosition(volume->minimum());
    }
  }
}
Je teste si SliderMove est "en cours", puis si la valeur actuelle (mise à jour mais non rafraichie cf doc signal) est au max et que ma sliderPosition est au max -1 je mets au max. Idem pour le minimum.

Cela fonctionne tant que le bouton du potentiomètre du QDial n'est pas lâché.