Qt 查找QDial是顺时针旋转还是逆时针旋转

Qt 查找QDial是顺时针旋转还是逆时针旋转,qt,qt4,qdial,Qt,Qt4,Qdial,有没有什么方法可以检测到QDial(wrapped属性设置为true)是顺时针还是逆时针旋转的?让0为最小值,100为最大值。如果两个连续值变化之间的差值为正值,则为逆时针旋转,否则为顺时针旋转(必须将其调整为实际值) 您应该子类化QDial并使用信号: 当sliderDown为真且滑块移动时,会发出此信号。 这通常发生在用户拖动滑块时。价值 是新的滑块位置 即使关闭跟踪,也会发出此信号 将此信号连接到一个插槽,用于计算旋转是顺时针还是逆时针 connect(this, SIGNAL(slide

有没有什么方法可以检测到
QDial
(wrapped属性设置为true)是顺时针还是逆时针旋转的?

让0为最小值,100为最大值。如果两个连续值变化之间的差值为正值,则为逆时针旋转,否则为顺时针旋转(必须将其调整为实际值)

您应该子类化
QDial
并使用信号:

当sliderDown为真且滑块移动时,会发出此信号。 这通常发生在用户拖动滑块时。价值 是新的滑块位置

即使关闭跟踪,也会发出此信号

将此信号连接到一个插槽,用于计算旋转是顺时针还是逆时针

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
}
connect(这个,信号(sliderMoved(int)),这个,插槽(calculateRotationDirection(int));
无效计算方向(int v)
{
int差=先前的值-v;
//确保我们还没有到达起点。。。
如果(v==0)
{
如果(上一个值==100)
方向=顺时针方向;
其他的
方向=逆时针方向_;
}
如果(v==100),则为else
{
如果(上一个值==0)
方向=逆时针方向_;
其他的
方向=顺时针方向;
} 
其他的
{   
如果(差异>0)
direction=direction\u逆时针;//一个简单的枚举
否则如果(差异<0)
方向=顺时针方向;
}
previousValue=v;//存储上一个值
}

现在,您可以添加一个函数,返回子类的
direction
属性。

将包装的
QDial的最小值设为0,最大值设为100。如果两个连续值变化之间的差值为正值,则为逆时针旋转,否则为顺时针旋转(必须将其调整为实际值)

您应该子类化
QDial
并使用信号:

当sliderDown为真且滑块移动时,会发出此信号。 这通常发生在用户拖动滑块时。价值 是新的滑块位置

即使关闭跟踪,也会发出此信号

将此信号连接到一个插槽,用于计算旋转是顺时针还是逆时针

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
}
connect(这个,信号(sliderMoved(int)),这个,插槽(calculateRotationDirection(int));
无效计算方向(int v)
{
int差=先前的值-v;
//确保我们还没有到达起点。。。
如果(v==0)
{
如果(上一个值==100)
方向=顺时针方向;
其他的
方向=逆时针方向_;
}
如果(v==100),则为else
{
如果(上一个值==0)
方向=逆时针方向_;
其他的
方向=顺时针方向;
} 
其他的
{   
如果(差异>0)
direction=direction\u逆时针;//一个简单的枚举
否则如果(差异<0)
方向=顺时针方向;
}
previousValue=v;//存储上一个值
}
现在,您可以添加一个函数,返回子类的
direction
属性