20200209-01 QML TableView 异常释放 C++ 对象

在 TableView 中用这种方式赋值,似乎将 C++ 对象与 QML 对象绑定在一起了,所以会被自动释放掉

问题码

Component.onCompleted: {
    var work = tableView.model.getItem(styleData.row)
    work.onValueChanged.connect(setText)
    text = work.mCurrentValue
}

function setText(val) { 
    text = val
}

Note: Avoid storing any state inside a delegate. If you do, reset it manually on receiving the TableView::reused signal.

If an item has timers or animations, consider pausing them on receiving the TableView::pooled signal. That way you avoid using the CPU resources for items that are not visible. Likewise, if an item has resources that cannot be reused, they could be freed up.

If you don't want to reuse items or if the delegate cannot support it, you can set the reuseItems property to false.

看这段的意思就是,对于那些不可以重复的内容, TableView 自带的 reused 机制可能会将其释放掉,需要显式声明 false

Reusing items


我的处理方案

property var workObj: tableView.model.getItem(styleData.row)
text: workObjT !== null ? workObjT.mCurrentValue : ""

用这种方式代替

原因:

没有在 import QtQuick.Controls 1.4 版本中找到相关描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值