qt model/view 结构中数据不刷新问题

已经改变了数据, 但是视图不更新, 最后发现是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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值