从定点填充 QDoubleSpinBox

Fill QDoubleSpinBox from fixed point

我在定点 16.16 中有一些数据可用,我想用 QDoubleSpinbox 对其进行修改。

问题是,每当我将定点数转换为双精度数时,都会出现 inevitable 舍入问题。 double = fixed / (double)65536

0.2为例,在固定点上这是0x00003333,但是当我把它放入QDoubleSpinBox时它显示 0.19999694824188 .
但是只要我触摸旋转框,它就会四舍五入到 0.2

如何使 QDoubleSpinBox 在 setValue 上循环?


QDoubleSpinbox 的行为符合设计,但我的 QAbstractTableModel 不是。
当旋转框的控件不可见时,table 隐式使用 QString 来显示 QVariant 中给定的值。
在qstring中实现固定精度setnum()paint()函数后,效果很好!

快速测试表明这在这里有效:

double valueToSet = 0x00003333 / (double)65536;
ui.doubleSpinBox->setValue(valueToSet);

UI 显示 0.20。旋转框在调用 setValue() 时会四舍五入。您可以自己检查the source code。我建议使用调试器进入该函数,看看对您来说有什么不同。