我想知道如果我可以在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