首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何子类QDial停止从最小到最大的移动?

如何子类QDial停止从最小到最大的移动?
EN

Stack Overflow用户
提问于 2016-05-30 14:53:06
回答 2查看 527关注 0票数 2

我想要将QDial子类,因为当你在最小值时,你可以很容易地将值更改为最大值(通过向下)。从最大值到最小值都有相同的问题。

为了做到这一点,我知道我必须继承QDial的子类。但我不知道从何说起。

EN

回答 2

Stack Overflow用户

发布于 2016-05-30 16:27:19

我可以给你提供一些指导。让我们试一试。

首先,您应该从QDial开始,而不是从QAbstractSlider开始,因为应该重新实现的目标方法是

  • virtual void mouseMoveEvent(QMouseEvent *e)
  • virtual void mousePressEvent(QMouseEvent *e)
  • virtual void mouseReleaseEvent(QMouseEvent *e)

它处理鼠标动作,如名称状态。查看source,您可以看到,问题的方法只是尝试将光标位置映射到有效的拨盘位置。这里发生了“跳转”,你想禁用它(我尝试了几个控制键(向上/向下翻页,向上/向下箭头,鼠标滚轮和鼠标点击/拖动),只有通过点击,你才能跳过一些未定义的值。)此外,您可能希望将pageStep设置为您的应用程序支持的值。

作为一种解决方案,我可能建议您采用valueFromPoint方法的结果,并递减或递增(如果该值更小或更大)当前值,而不是将其设置为结果。这应该会禁用跳转。

Qt 5.6.0

票数 0
EN

Stack Overflow用户

发布于 2020-06-14 10:36:23

我在寻找有关如何更改某些dial属性的信息时遇到了这个问题。您可以使用setWrapping(bool)插槽“快速”(跳过)停止表盘上的滑块从最小移动到最大。

代码语言:javascript
复制
myNewDial = new QDial(whateverYourQWidgetIs);
myNewDial->setWrapping(true);

这将为您提供滑块的完整360度运动范围。

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

https://stackoverflow.com/questions/37519339

复制
相关文章

相似问题

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