我正在使用TableView
来显示SQLite数据库的内容。用户单击其中一个可检查按钮,并通过LocalStorage
API读取右表。因此,模型总是新的。
因为模型总是新的,所以新表的加载在视觉上不具吸引力(所有条目都会立即显示)。
我的想法是在添加行时以行为高度设置动画(从0开始以线性方式)
这可以在不重新实现rowDelegate
从头开始的情况下完成吗?
答案 0 :(得分:3)
是的,这是可能的。
TableView
使用ListView
作为内部对象。您可以使用属性__listView
访问它。
使用ListView
,可以指定视图中的项目因修改视图模型而发生更改时应应用的过渡。
Transition {
id: populateTransition
NumberAnimation { properties: "y"; duration: 300 }
}
TableView {
TableViewColumn {
role: "title"
title: "Title"
width: 100
}
model: libraryModel
Component.onCompleted: {
this.__listView.populate = populateTransition
this.__listView.add = populateTransition
}
}
P.S。此解决方案依赖于修改内部对象,并且无法保证在不同的Qt版本或平台上工作。
答案 1 :(得分:0)
没有
这将是令人难以置信的hacky。我想它会是这样的(假设只有QML):
此时行项目可能已经显示为全高,但假设情况并非如此,那么您需要动态创建NumberAnimation
,例如,然后动画高度变化。
最好使用支持转换的TableView
创建自己的ListView
。