首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看QDial是顺时针旋转还是逆时针旋转

查看QDial是顺时针旋转还是逆时针旋转
EN

Stack Overflow用户
提问于 2011-11-21 18:10:58
回答 1查看 942关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-21 18:22:49

让0表示包装的QDial的最小值,100表示最大值。如果两个连续的值变化之间的差异是正的,那么你就是逆时针旋转,如果不是,你就是顺时针旋转(你必须把它调整到你的实际值)。

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

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

此信号即使在跟踪关闭时也会发出。

将此信号连接到计算旋转是顺时针还是逆时针的插槽

代码语言:javascript
复制
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属性的函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8210148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档