Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt4 QtGui QTreeWidgetItem setData包含浮点数_Qt4_Pyqt4_Qtreewidget - Fatal编程技术网

Qt4 QtGui QTreeWidgetItem setData包含浮点数

Qt4 QtGui QTreeWidgetItem setData包含浮点数,qt4,pyqt4,qtreewidget,Qt4,Pyqt4,Qtreewidget,我想知道是否可以在QTreeWidgetItem中保留浮点值 当我尝试使用setData(0,0,number)记录数字时,它将其舍入到6位精度,这对我来说是不够的。我想保留精确的浮点值,以便进一步计算。我认为使用QVariant和str可以做到这一点 a = 0.12345678963582 item.setData(QtCore.Qt.UserRole,QtCore.QVariant(str(a))) ..... val = float(item.data(QtCore.Qt.User

我想知道是否可以在QTreeWidgetItem中保留浮点值


当我尝试使用setData(0,0,number)记录数字时,它将其舍入到6位精度,这对我来说是不够的。我想保留精确的浮点值,以便进一步计算。

我认为使用QVariant和str可以做到这一点

a = 0.12345678963582

item.setData(QtCore.Qt.UserRole,QtCore.QVariant(str(a)))

.....

val = float(item.data(QtCore.Qt.UserRole).toString()).strip())

您可以做两件事之一,QVariant可以存储任何类型:

v = QtCore.QVariant(aFloat)
aFloat = v.toDouble()[0]
然后将QVariant存储为数据

也可以对项目设置任意属性:

item = QtGui.QTreeWidgetItem()
item.foo = 123.123

你可以把它存储为一个字符串。嗯,我正在努力保持精度。字符串不够精确。怎么做?如果将Python
float
转换为字符串,它将保留其所有精度。您没有丢失任何东西。请给出一个带有实际值的简单代码示例。并说明您正在使用的python版本。@Blender:这仅在一定精度下是正确的,尽管这是不正确的。不管QVariant
assert float(QtCore.QVariant(str(a)),您仍然在与字符串进行转换。toString())==a
这很奇怪!当我执行setData(1,QtCore.Qt.DisplayRole,QtCore.QVariant(number))时,它不再显示数字,而setData(1,QtCore.Qt.DisplayRole,number)起作用…将它的字符串版本设置为
Qt.DisplayRole
,将QVariant float精确版本设置为
Qt.UserRole
,以便您可以单独处理它们。或者使用我的建议,将其作为属性添加。