如何在QML中子行为

时间:2016-05-06 20:15:31

标签: qt qml

我的屏幕上有许多对象,我更改了不透明度,并且为了使此不透明度更改为动画而不是瞬时,我将此 .block { background: orange; height: 500px; } .centered { text-align: center; background: pink; position: relative; top: 0; -webkit-transition: all .5s; -moz-transition: all .5s; -o-transition: all .5s; transition: all .5s; } .block:hover .centered { -webkit-transform: translateY(-50%); transform: translateY(-50%); top: 50%; } 添加到每个对象:

Behavior

我试图将其子类化(不确定"子类"这里是否是正确的术语)。我已经创建了一个名为Behavior on opacity { NumberAnimation { duration: 500 easing.type: Easing.InOutQuad } } 的文件,其中包含以下内容:

FadeBehavior.qml

然后,我没有将import QtQuick 2.3 import QtQuick.Controls 1.3 as Controls Behavior on opacity { id: fadeBehavior NumberAnimation { duration: 500 easing.type: Easing.InOutQuad } } 添加到每个对象,而是添加:

Behavior

但是这不起作用(抱歉,我无法添加更多信息而不是"没有工作" - 这是一个继承的应用程序,我无法在调试模式下运行它;当我在我的QML文件中出错,所有发生的事情就是我的窗口显示为空白的1英寸方块。

似乎第一行中的FadeBehavior { } 是Qt不喜欢的部分。 on opacity FadeBehavior.qml标有红色下划线,需要令牌on opacity。是否有其他语法用于指定{附加到的属性的名称?

1 个答案:

答案 0 :(得分:0)

这是一个可以解决的问题。

将您需要的所有标准类型(RectangleItemImage等)归类为此类

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

将其另存为 MyItem.qml ,并将每Item更改为MyItem