子类QDial如何停止从最小值移动到最大值
How Subclass QDial to Stop Moving from Min to Max?
我想对QDial进行子类,因为当您处于最小值时,您可以轻松地将值更改为最大值(通过向下)。从最大值到最小值相同的问题。
为了做到这一点,我知道我必须对QDial进行子类。但我不知道从哪里开始。
我可以为您提供一些指导...让我们试试。
首先你应该从 QDial
开始,而不是QAbstractSlider
,因为你应该重新实现的目标方法是
-
virtual void mouseMoveEvent(QMouseEvent *e)
-
virtual void mousePressEvent(QMouseEvent *e)
-
virtual void mouseReleaseEvent(QMouseEvent *e)
处理鼠标操作,如名称状态。查看源,您可以看到,问题的方法只是尝试将光标位置映射到有效的拨号位置。这里发生了"跳转",你想要禁用它(我尝试了几个控制键(向上/向下翻页,向上/向下箭头,鼠标滚轮和鼠标单击/拖动),只有通过单击,您才能跳过未定义的值数量。此外,您可能希望将pageStep
设置为应用程序支持的值。
作为解决方案,我可能会建议您采用valueFromPoint
方法的结果并递减或递增(如果值小于或增大)当前值,而不是将其设置为结果。这应该会禁用跳转。
Qt 5.6.0
我遇到了这个问题,寻找有关如何更改某些表盘属性的信息。您可以使用setWrapping(bool)
槽阻止表盘上的滑块"快速"(跳过)从最小值移动到最大值。
myNewDial = new QDial(whateverYourQWidgetIs);
myNewDial->setWrapping(true);
这将为您提供滑块的完整 360 度运动范围。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 整数溢出,最大值为 pow(10,19)
- 以C++递归方式查找向量中的最大值
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如何使用可变参数模板类使用模板元编程获得最大值
- C++不同的最小最大值实现
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 查找包含 N 个元素的数组的最小值和最大值
- 井字游戏具有奇怪行为的最小最大值算法(C++)
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 子类QDial如何停止从最小值移动到最大值