从固定点填充 QDoubleSpinBox
Posted
技术标签:
【中文标题】从固定点填充 QDoubleSpinBox【英文标题】:Fill QDoubleSpinBox from fixed point 【发布时间】: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()
函数后,效果很好!
【问题讨论】:
查看小数属性。 spinbox 基于此值进行四舍五入:doc.qt.io/qt-5/qdoublespinbox.html#decimals-prop 【参考方案1】:快速测试表明这在这里有效:
double valueToSet = 0x00003333 / (double)65536;
ui.doubleSpinBox->setValue(valueToSet);
UI 显示 0.20。调用setValue()
时,旋转框会转一圈。您可以自己查看the source code。我建议使用调试器进入函数,看看有什么不同。
【讨论】:
查看编辑。在查看了源代码后,我查看了 spinbox 的容器。它就在那里。以上是关于从固定点填充 QDoubleSpinBox的主要内容,如果未能解决你的问题,请参考以下文章