QML视图不会刷新相同数据模型中的更改

时间:2016-12-14 08:57:30

标签: c++ qt qml

我在两个DelegateModel中使用相同的模型在单独的组件中。当我在模型中添加一些东西时,带有(0,0)rootIndex的DelegateModel会刷新,但我指定了rootIndex的DelegateModel不会刷新。当我再次打开第二个视图时,它会显示委托项目。

DelegateModel {
    id: canvasModel
    model: mymodel
    rootIndex: model.index(0, 0)
}
Repeater {
   id: canvasModel
}

在另一个组件中

DelegateModel {
    id: canvasModel2
    model: mymodel
    rootIndex: model.index(someIndex, 0, parentIndex)
}
Repeater {
   id: canvasModel2
}

现在当我向模型的根添加一些内容时,它会在第一个canvasModel中显示,但是如果我在canvasModel2的根索引下添加一个项目,那么这些代理就不会刷新。 我正在使用封装QDomDocument的Qt示例项目的DomModel类 如果我再次加载第二个组件,那么代表就可以了。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

所以问题是

我一直在两个窗口中使用这两个DelegateModel组件。 ApplicationWindow中使用的一个模型改变了信号,我作为ApplicationWindow的子项创建的信号没有接收到事件。所以问题是子窗口不是ApplicationWindow的直接子窗口,而是一个被毁坏的未知委托的子窗口。所以我把第二个窗口作为ApplicationWindow的直接子项并解决了这个问题。