已经改变了数据, 但是视图不更新, 最后发现是model的data()接口处得设置一下数据类型
原代码:
def data(self, index: QModelIndex, role: int = ...):
if not index.isValid():
return QVariant()
# 居中显示文本
if role == Qt.TextAlignmentRole:
value = Qt.AlignCenter | Qt.AlignLeft
return value
if role == Qt.DisplayRole or role == Qt.EditRole:
data = self._data_list[index.row()][index.column()]
return data
else:
return QVariant()
我打印出data值符合我预期结果, 但是界面上不刷新显示, 网上找了各种方法都没解决, 最后想了下是不是数据类型的原因, 结果打印数据类型竟然是 numpy float64, 最后我给转成python的float类型就可以显示了(已经确保我的数据只能是str和float)
更改后
def data(self, index: QModelIndex, role: int = ...):
if not index.isValid():
return QVariant()
# 居中显示文本
if role == Qt.TextAlignmentRole:
value = Qt.AlignCenter | Qt.AlignLeft
return value
if role == Qt.DisplayRole or role == Qt.EditRole:
data = self._data_list[index.row()][index.column()]
if isinstance(data, str):
return data
else:
return float(data)
else:
return QVariant()