我想知道如果我可以在QTreeWidgetItem中保留浮点值?QtGui QTreeWidgetItem setData保存一个浮点数
当我尝试使用setData(0,0,数字)记录数字时,它将其舍入到6位精度,这对我来说是不够的。我想保留精确的浮点值进行进一步的计算。
我想知道如果我可以在QTreeWidgetItem中保留浮点值?QtGui QTreeWidgetItem setData保存一个浮点数
当我尝试使用setData(0,0,数字)记录数字时,它将其舍入到6位精度,这对我来说是不够的。我想保留精确的浮点值进行进一步的计算。
你可以做一两件事情,一个的QVariant可以存储任何类型相当多:
v = QtCore.QVariant(aFloat)
aFloat = v.toDouble()[0]
你将存储的QVariant作为数据。
或者你可以设置的项目任意属性:
item = QtGui.QTreeWidgetItem()
item.foo = 123.123
这很奇怪!当我做setData(1,QtCore.Qt.DisplayRole,QtCore.QVariant(数字))时它不再显示数字,而setData(1,QtCore.Qt.DisplayRole,数字)工作... – Kiarash 2012-08-17 21:00:56
设置一个字符串版本它作为'Qt.DisplayRole'和QVariant将精确版本浮动为'Qt.UserRole',因此您可以分别处理它们。或者使用我的建议,只是将其添加为属性。 – jdi 2012-08-17 21:02:49
第二个建议工作得很完美。谢谢。 – Kiarash 2012-08-17 21:08:36
使用的QVariant通过str可以做taht我觉得
a = 0.12345678963582
item.setData(QtCore.Qt.UserRole,QtCore.QVariant(str(a)))
.....
val = float(item.data(QtCore.Qt.UserRole).toString()).strip())
你可以把它保存为一个字符串。 – Blender 2012-08-17 01:13:37
好吧,我正在努力保持精确度。字符串不够精确。 – Kiarash 2012-08-17 01:15:54
如何?如果你将一个Python的float类型转换为一个字符串,它将保留所有的精度。你不会失去任何东西。 – Blender 2012-08-17 01:17:44