【问题标题】:Fill QDoubleSpinBox from fixed point从固定点填充 QDoubleSpinBox
【发布时间】:2017-06-29 06:08:48
【问题描述】:

我想用 QDoubleSpinbox 修改定点 16.16 中的一些数据。

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

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

如何让 QDoubleSpinBox 在 setValue 上四舍五入?


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

【问题讨论】:

标签: qt floating-point fixed-point


【解决方案1】:

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

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

UI 显示 0.20。调用setValue() 时,旋转框会转一圈。您可以自己查看the source code。我建议使用调试器进入函数,看看有什么不同。

【讨论】:

  • 查看编辑。在查看了源代码后,我查看了 spinbox 的容器。它就在那里。
猜你喜欢
  • 2012-04-02
  • 2017-06-07
  • 1970-01-01
  • 2011-09-14
  • 2012-01-12
  • 2019-10-29
  • 1970-01-01
  • 2014-02-11
  • 2019-11-18
相关资源
最近更新 更多