如何在QML文件中为函数中的不透明度(或其他属性)设置动画?

时间:2016-05-06 18:39:06

标签: qt qml

我在QML文件中创建了这个函数:

function setPanelOpacity(panel, visiblePanel) {
    panel.opacity = (panel === visiblePanel) ? 1 : 0;
}

这样可行,但我希望不透明度变化需要0.5秒而不是一次性完成。我怎么能在这个功能里面做到这一点? (我已经看过使用QML对象中定义的状态和转换的示例,但没有任何内容完全在像我的函数这样的函数中完成)

编辑:我看到我可以通过向每个面板对象添加Behavior来实现此目的,如下所示:

Behavior on opacity {
    NumberAnimation {
        duration: 500
        easing.type: Easing.InOutQuad
    }
}

不得不将这个块添加到我的所有对象中,这有点痛苦。有没有办法在我的方法中完全以编程方式实现这一点,或者将此Behavior应用于我页面上的每个对象?

1 个答案:

答案 0 :(得分:0)

QML从一开始就被设计为一种声明性语言,而你现在拥有的是最佳解决方案。虽然很可能使用函数进行动画处理,但它肯定不那么方便和干净。

如果目标是避免代码重复,只需在您自己的自定义类型中实现所需的行为,然后您可以根据需要实例化它,并且每个实例都将具有所需的行为,而无需手动实现它。 / p>