4

我的应用程序开始消耗大量内存。第一个镜头是 MNG 动画缓存,但看起来它们只是不共享。因此,我在构造函数/析构函数中创建了一个带有调试打印的 TestItem,当通过视频停止信号更改其源时,我看到 Loader 不工作属性:

import QtQuick 1.1
import QtMultimediaKit 1.1

Rectangle {
    id:root
    width: 800
    height: 480

    Video {
        id: video1
        anchors.fill: parent
        source: "test.mp4" 
        onStopped: {
            loader1.source= "Test2.qml";
        }
    }
    Loader {
        id:loader1
        onSourceChanged: {
            console.debug("source changed to "+source)
        }
    }
    MouseArea {
        anchors.fill: parent
        onPressed: {
            loader1.source= "Test1.qml";
            video1.play();
        }
    }
}

因此,当我单击 4 次时,我会得到如下控制台输出:

TestItem(0x1b4fc00) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
TestItem(0x2047ba0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2046720) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2047ba0) 
TestItem(0x2050560) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x204fad0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2050560) 
TestItem(0x2051e40) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2051330) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2051e40) 
TestItem(0x2052e90) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml

当我关闭我的应用程序时,所有剩余的对象都被删除:

~ TestItem(0x1b4fc00) 
~ TestItem(0x2046720) 
~ TestItem(0x204fad0) 
~ TestItem(0x2051330) 
~ TestItem(0x2052e90) 

为什么 onStopped 信号会产生这样的行为?有什么解决办法吗?

在 Ubuntu 12.04 上使用 libqt4-declarative(版本:4:4.8.1-0ubuntu4.2)和 libdeclarative-multimedia(版本:1.2.0-1ubuntu2)进行测试。

4

0 回答 0