从定点填充 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。我建议使用调试器进入该函数,看看对您来说有什么不同。
我在定点 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。我建议使用调试器进入该函数,看看对您来说有什么不同。