4

我有一个这样的列表视图元素:

ListView {
    id: view
    width: 200; height: 250
    model:myModel;
    delegate:
        Text{
            text:  bareJid + ' '+status;
            Image{
                source:image;
            }
        }
}

在委托 Image 元素中,从QDeclarativeImageProvider获取其图像。但是当图像的内容发生变化时 myModel 不会更新。当图像的内容发生变化时,我怎么能注意到它重新加载图像。谢谢。

4

1 回答 1

8

除非更改源,否则 Image 项将不会尝试重新获取图像。通常,这是通过在图像名称的末尾附加一个可以递增的 id 并在模型和提供程序中处理它来实现的。您还应该设置cache: false,因为没有必要缓存正在更改的图像。

另一种可能性可能是cache: false先将图像角色设置和更改为“”,然后再返回实际名称,记住每次更改后发出 dataChanged。请注意,图像之前不能使用 cache: true 加载,否则无论如何都将使用缓存版本(这在 QtQuick 2.0 中已修复)。

于 2012-08-06T02:02:28.977 回答