我也遇到了同样的问题,用的pyside6
表格'重量'和'价格'列的值用的double类型,
在QDoubleSpinBox中取值和赋值一切都正常
并且QTableWidgetItem使用了.setData(Qt.ItemDataRole.EditRole, data)方法
最开始发现当数值小于一万,比如9999.11时,在表格列里显示完整,
但是当数值大于一万时,就会存在四舍五入的情况,
比如10000.11在表格列里会显示成10000.1,
比如10000.15在表格列里会显示成10000.2
还有一种特殊情况,不知道是不是我理解有问题,
比如10000.05在表格列里会直接显示成10000,不会是预料的10000.1
10000.06时才会在表格列里显示10000.1
没看到QTableWidgetItem里面有相关的取消科学记数的方法
使用 [item.data() for item in self.selectedIndexes()]
和 [item.text() for item in self.selectedItems()] 查看数据时和数据库保存的数据一致,
就只是在表格列中显示有问题,如果QTableWidgetItem使用setText()设置值,
在表格列中显示就不会存在这些问题,但是后期在赋值和取值时还要转换一下,
表格列排序也会出现问题,比如说升序排序,100会排在在10和12之间等问题
还要从数据库重新调数据根据QHeaderView的排序符手写排序,简直是多此一举
最后还是按楼主的方法达到了预期要求
对相关列设置QItemDelegate对象
self.setItemDelegateForColumn(self.header_list.index("物品重量(kg)"), QItemDelegate(self))
# self.setItemDelegateForColumn(self.header_list.index("物品价值(元)"), QItemDelegate(self))