Найти, был ли QDial повернут по часовой стрелке или против часовой стрелки - PullRequest
0 голосов
/ 21 ноября 2011

Есть ли способ, с помощью которого я могу определить, было ли QDial (с обернутым свойством, установленным в true) вращаться по часовой стрелке или против часовой стрелки?

1 Ответ

5 голосов
/ 21 ноября 2011

Пусть 0 минимум и 100 максимум вашего обернутого QDial.Если разница между двумя последовательными изменениями значений является положительной, то у вас есть вращение против часовой стрелки, если нет, у вас есть вращение по часовой стрелке (вы должны отрегулировать его в соответствии с вашими фактическими значениями)

Вы должны подкласс QDial ииспользуйте сигнал sliderMoved:

Этот сигнал испускается, когда sliderDown имеет значение true и ползунок перемещается.Обычно это происходит, когда пользователь перетаскивает ползунок.Значение - это новая позиция ползунка.

Этот сигнал испускается, даже если отслеживание отключено.

Подключите этот сигнал к слоту, который вычисляет, было ли вращение по часовой стрелке или противпо часовой стрелке

connect(this, SIGNAL(sliderMoved(int)), this, SLOT(calculateRotationDirection(int)));

void calculateRotationDirection(int v)
{
   int difference = previousValue - v;

   // make sure we have not reached the start...
   if (v == 0)
   {
       if (previousValue == 100)
          direction = DIRECTION_CLOCKWISE;
       else
          direction = DIRECTION_ANTICLOCKWISE;
   }
   else if (v == 100)
   {
       if (previousValue == 0)
          direction = DIRECTION_ANTICLOCKWISE;
       else
          direction = DIRECTION_CLOCKWISE;
   } 
   else
   {   
      if (difference > 0)
         direction = DIRECTION_ANTICLOCKWISE; // a simple enum
      else if (difference  < 0)
         direction = DIRECTION_CLOCKWISE;  
   }
   previousValue = v; // store the previous value
}

Теперь вы можете добавить функцию, которая возвращает свойство direction вашего подкласса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...