QML ListView Loader不需要的预定义行为

时间:2016-05-21 14:33:52

标签: listview qml loader

我遇到以下代码的问题:

    ListModel{
       id: listModelWelcome
       ListElement{
           url: "firstTime1.qml"
       }
       ListElement{
           url: "firstTime2.qml"
       }
       ListElement{
           url: "firstTime3.qml"
       }
   }

ListView{
    id: listViewWelcome
    z: 1
    currentIndex: 1
    model: listModelWelcome
    delegate: Component{
        Loader{
            source: url
        }
    }
}

当更改currentIndex时,在加载新的.qml文件之前,最后一个是向上动画的。我只想在没有预定义动画的情况下立即加载它。 有人建议如何禁用此行为?

谢谢。

1 个答案:

答案 0 :(得分:0)

import QtQuick 2.4
import QtQuick.Window 2.2

Window {

    id: root
    visible: true
        ListModel{
       id: listModelWelcome
       ListElement{
           url: "red.qml"
       }
       ListElement{
           url: "blue.qml"
       }
   }

ListView{
    id: listViewWelcome
    currentIndex: 0
    model: listModelWelcome          //1
    delegate: Component{
        Loader{
            id: loaderWelcome
            active: isFirstTime
            source: url             //listModelWelcome.get(listViewWelcome.currentIndex).url

        }
    }
}
}

注释代码而不是当前正常工作。什么都没动。当点击red.qml向上移动时,当前工作方式错误。

red.qml

import QtQuick 2.0

Item {
x:0
y:0
width: root.width
height: root.height
Rectangle{
    anchors.fill: parent
    color: "red"
    MouseArea{
        anchors.fill: parent
        onClicked: {
            listViewWelcome.currentIndex = 1
        }
    }
}
}

blue.qml

import QtQuick 2.0

Item {
x:0
y:0
width: root.width
height: root.height
Rectangle{
    anchors.fill: parent
    color: "blue"
    MouseArea{
        anchors.fill: parent
        onClicked: {
            //listViewWelcome.currentIndex = 1
        }
    }
}
}