Qt 如何延迟qml中加载程序元素内容的可见性?
我使用Loader元素以异步方式加载主内容qml,并在窗口上主动显示另一个qml时使其就绪 我试图在计时器2秒到期时显示loader_two内容。但是,即使在计时器到期之前,加载程序_2也会在加载后立即可见。我如何做到这一点 这是我的密码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{
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;
}
}