Qt 如何延迟qml中加载程序元素内容的可见性?

Qt 如何延迟qml中加载程序元素内容的可见性?,qt,qml,loader,Qt,Qml,Loader,我使用Loader元素以异步方式加载主内容qml,并在窗口上主动显示另一个qml时使其就绪 我试图在计时器2秒到期时显示loader_two内容。但是,即使在计时器到期之前,加载程序_2也会在加载后立即可见。我如何做到这一点 这是我的密码 Loader{ id:loader_one active: true visible: true anchors.fill: parent asynchronous: true source: "Star

我使用Loader元素以异步方式加载主内容qml,并在窗口上主动显示另一个qml时使其就绪

我试图在计时器2秒到期时显示loader_two内容。但是,即使在计时器到期之前,加载程序_2也会在加载后立即可见。我如何做到这一点

这是我的密码

    Loader{
    id:loader_one
    active: true
    visible: true
    anchors.fill: parent
    asynchronous: true
    source: "Start.qml"
    onLoaded: {
        loader_two.active = true
        show_content_timer.start()
    }
}

Loader{
    id:loader_two
    active:false
    anchors.fill: parent
    asynchronous: true
    source: "Main_content.qml"
}
Timer{
    id: show_content_timer
    interval: 2000
    repeat: false
    running: false
    triggeredOnStart: false
    onTriggered:
    {
        console.log("2seconds expired")
        loader_one.source = ""
        loader_one.item.visible = false;
        loader_two.item.visible = true;
    }
}

使用组件,然后执行Component.create()以创建一个将远程加载但在调用Component.create()之前不会显示的项


我可以通过在默认情况下将loader_two的可见性设置为false,并在计时器过期后将其设置为true来实现延迟。我试图通过控制loader_two.item.visible属性来实现同样的目的,该属性在前面不起作用

这是我最后的工作代码。谢谢

Loader{
id:loader_one
active: true
visible: true
anchors.fill: parent
asynchronous: true
source: "Start.qml"
onLoaded: {
    loader_two.active = true
    show_content_timer.start()
}
}

Loader{
id:loader_two
active:false
visible: false
anchors.fill: parent
asynchronous: true
source: "Main_content.qml"
}
Timer{
id: show_content_timer
interval: 2000
repeat: false
running: false
triggeredOnStart: false
onTriggered:
{
    console.log("2seconds expired")
    loader_one.source = ""
    loader_one.item.visible = false;
    loader_two.visible = true;
}
}

您可以在
loader\u one中设置
loader\u two.active=true
。无延迟地加载了
loader\u two。我之所以设置它,是因为我需要在后台准备好loader two的内容。如果加载器处于非活动状态,则在加载器变为活动状态之前,更改源不会导致项目被实例化。但使用组件不会立即实例化内容吗?如果你想动态实例化,你可以总是使用C++来用QTIME::SUNLLHOT和QQMList::CurATE()实现你的目标。
Loader{
id:loader_one
active: true
visible: true
anchors.fill: parent
asynchronous: true
source: "Start.qml"
onLoaded: {
    loader_two.active = true
    show_content_timer.start()
}
}

Loader{
id:loader_two
active:false
visible: false
anchors.fill: parent
asynchronous: true
source: "Main_content.qml"
}
Timer{
id: show_content_timer
interval: 2000
repeat: false
running: false
triggeredOnStart: false
onTriggered:
{
    console.log("2seconds expired")
    loader_one.source = ""
    loader_one.item.visible = false;
    loader_two.visible = true;
}
}