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

Posted

技术标签:

【中文标题】QML ListView Loader 不需要的预定义行为【英文标题】:QML ListView Loader unwanted predefined behaviour 【发布时间】:2016-09-18 18:06:06 【问题描述】:

下面的代码有问题:

    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 文件之前,最后一个动画向上。我只想立即加载它,而不需要预定义的动画。 任何建议如何禁用此行为?

谢谢。

【问题讨论】:

请发mcve,以便我们运行它进行测试 已发布。感谢您提前进行测试。 【参考方案1】:
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
        
    


【讨论】:

以上是关于QML ListView Loader 不需要的预定义行为的主要内容,如果未能解决你的问题,请参考以下文章

QML ListView 填充不透明动画

如何在 QML 视图之间动态更改

QML Loader 使用注意事项

如何将 QML 插件设置为 Loader 的源

QML - QML实时预览 Qml live loader

在 QML 中重用委托组件