qt - 当图像内容随 QDeclarativeImageProvider 更改时,图像元素不会更新

标签 qt qml qt-quick

我有一个这样的 ListView 元素:

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

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

最佳答案

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

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

关于qt - 当图像内容随 QDeclarativeImageProvider 更改时,图像元素不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807031/

相关文章:

c++ - 发出 Qt 信号时是否有可能抛出异常?

c++ - QClipboard 和 selectedText() 在 QTextEdit 中不相等

qt - QML Horizo​​ntalHeaderView 没有按预期工作

c++ - 从 Qml 调用 C++ 时 Qt 5.12 偶发 SIGSEGV

linux - qml 从控制台工作,但在 qt creator 下不工作

c++ - 使用 QML 创建 curses 应用程序

qt - 如何在 Qt/PyQt 中删除 QStandardItem 的文本?

c++ - 将新项目添加到基于 QAbstractListModel 的模型时,QML View 不会更新

qt - QML:如何在网格内移动项目

c++ - QGridLayout addWidget(CustomWidget) 不工作