我想要将QDial子类,因为当你在最小值时,你可以很容易地将值更改为最大值(通过向下)。从最大值到最小值都有相同的问题。
为了做到这一点,我知道我必须继承QDial的子类。但我不知道从何说起。
发布于 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
发布于 2020-06-14 10:36:23
我在寻找有关如何更改某些dial属性的信息时遇到了这个问题。您可以使用setWrapping(bool)插槽“快速”(跳过)停止表盘上的滑块从最小移动到最大。
myNewDial = new QDial(whateverYourQWidgetIs);
myNewDial->setWrapping(true);这将为您提供滑块的完整360度运动范围。
https://stackoverflow.com/questions/37519339
复制相似问题