Qml图像和内存释放

时间:2017-08-28 09:36:36

标签: image qt memory qml qt-quick

我注意到没有释放为Image分配的内存。

如果没有启动应用程序,系统将具有以下内存值:423MiB / 1985MiB(通过nvidia-smi检查)

当我启动应用程序并单击(更改图像源)时,内存使用量增加(1次点击增加4-5MB):1950MiB / 1985MiB

将“cache”属性设置为false无济于事。

我找到了解决方法:更改图像可见性,但在这种情况下需要很多图像项目。

是否存在使用“source”属性而非“可见”的解决方案?

qml来源:

Image {
    id: trg
    anchors.fill: parent
    cache: false

    states: [
        State {
            name: "on"
            PropertyChanges {
                target: trg
                source: "qrc:/1.png"
            }
        },
        State {
            name: "off"
            PropertyChanges {
                target: trg
                source: "qrc:/2.png"
            }
        }
    ]
}

MouseArea {
    property bool isOn: false
    anchors.fill: parent

    onClicked: {
        if (isOn) {
            trg.state = "on";
        }
        else {
            trg.state = "off";
        }
        isOn = !isOn;
    }
}

1 个答案:

答案 0 :(得分:2)

不幸的是,这是一个错误(QTBUG-61754还有一些)已经在qt 5.9.2快照中修复过了(我曾经使用5.9.1版本)。