【发布时间】:2020-09-18 10:05:51
【问题描述】:
我在后台使用带有 QSqlTableModel 的列表视图。我还为列表视图元素使用 SwipeDelegate 来提供“删除按钮”,如下所示:
现在按下按钮时,使用 QSqlTableModel 子类中的以下代码从数据库中删除项目:
void qsoModel::deleteQSO(int id) {
removeRow(id);
submitAll();
}
附带问题:当我理解正确时,removeRow 隐式调用 beginRemoveRows(...) 和 endRemoveRows()?
对于 ListView,我使用了一个移除转换:
ListView {
id: listView
anchors.fill: parent
model: qsoModel
//...
delegate: QSOItem {}
remove: Transition {
NumberAnimation { property: "opacity"; from: 1.0; to: 0; duration: 400 }
NumberAnimation { property: "scale"; from: 1.0; to: 0.0; duration: 400 }
}
但是,如果我按下删除按钮,则不会显示动画。列表元素很快就消失了。任何想法为什么会发生这种情况?
完整的源代码可以在这个提交中找到:https://github.com/myzinsky/cloudLogOffline/tree/b501d41a0f23d40139cfca9a6d4f724f4ab251b2
【问题讨论】:
-
您不是必须使用
ParallelAnimation来组合您的动画吗?我记得Transition应该只包含一个动画项。 -
qml remove: Transition { ParallelAnimation { running: true NumberAnimation { property: "opacity"; from: 1.0; to: 0; duration: 400 } NumberAnimation { property: "scale"; from: 1.0; to: 0.0; duration: 400 } } }也无济于事:( -
从我可以看到删除动画根本没有触发:(
标签: qt listview qml qtquick2 qsqltablemodel