我是Qt和QML的新手 - 这似乎是一个相当简单的问题,但我无法找到一个简单的解决方案。
说我有以下示例QML
ScrollViewer.VerticalScrollBarVisibility="Hidden" on your inner list views.
现在当obj属性变为null时,我想淡出obj_container项,同时仍然显示它在设置为null之前的值。
或者,如果obj项目更改为不同的obj,我想淡出obj_container项目(仍然显示其先前的值),然后使用新值再次淡入它。
我该怎么做?
更新
示例中的obj是使用C ++中的setContextProperty设置的对象的Q_PROPERTY,如
Item {
... lots of other stuff
Item {
id: obj_container
property var obj
Text {
text: obj.name
}
Image {
source: obj.source
}
}
}
上面示例中的obj属性将设置为
engine.rootContext()->setContextProperty("obj_holder", &obj_holder);
虽然我认为出于上述目的,obj属性的来源或设置/更改方式并没有什么区别。当obj改变时,上面应该发生(用旧值淡出obj_container,用新值淡化obj_container)
答案 0 :(得分:0)
使用Animation
之一可以轻松完成淡出。
例如:
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
width: 600
height: 400
visible: true
Text {
id: txt
anchors.centerIn: parent
property int count: 0
text: count
opacity: 1
font.pixelSize: 100
SequentialAnimation {
id: anim
PropertyAnimation {
target: txt
property: "opacity"
to: 0
duration: 1000
easing.type: Easing.OutQuart
}
PropertyAction {
target: txt
property: "count"
value: txt.count + 1
}
PropertyAnimation {
target: txt
property: "opacity"
to: 1
duration: 1000
easing.type: Easing.InOutCubic
}
}
}
Timer {
interval: 2000
repeat: true
running: true
onTriggered: anim.running = true
}
}