Qt 如何在QML中对行为进行子类化
我在屏幕上有许多对象,我更改了它们的不透明度,为了使不透明度更改成为动画而不是即时的,我将此Qt 如何在QML中对行为进行子类化,qt,qml,Qt,Qml,我在屏幕上有许多对象,我更改了它们的不透明度,为了使不透明度更改成为动画而不是即时的,我将此行为添加到每个对象中: Behavior on opacity { NumberAnimation { duration: 500 easing.type: Easing.InOutQuad } } 我试图将其子类化(不确定这里的“子类”是否正确)。我创建了一个名为FadeBehavior.qml的文件,其中包含以下内容: import QtQuick 2
行为添加到每个对象中:
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
}
}
然后,我不再向每个对象添加行为
,而是添加:
FadeBehavior { }
但这不起作用(很抱歉,我不能添加比“不起作用”更多的信息-这是一个继承的应用程序,我无法在调试模式下运行它;当我在QML文件中出错时,所发生的一切就是我的窗口显示为一个空白的一英寸正方形)
第一行中不透明度上的似乎是Qt不喜欢的部分。在FadeBehavior.qml
中,不透明度上的以红色下划线,应为标记{
。是否有其他语法用于指定行为所附加到的属性的名称?以下是一个可行的解决方法
将您需要的所有标准类型(矩形
,项
,图像
,等等)进行子类化,如下所示
Item {
Behavior on opacity {
NumberAnimation {
duration: 500
easing.type: Easing.InOutQuad
}
}
}
将其另存为MyItem.qml,并将每个项目更改为MyItem
以下是一个可行的解决方法
将您需要的所有标准类型(矩形
,项
,图像
,等等)进行子类化,如下所示
Item {
Behavior on opacity {
NumberAnimation {
duration: 500
easing.type: Easing.InOutQuad
}
}
}
将其另存为MyItem.qml,并将每个项目更改为MyItem
您不能真正做到这一点,行为
是一种“特殊”行为QML元素,甚至它的语法都是QML语言范例中的一个例外。我个人不喜欢这样,尤其是缺少一种指定目标的替代方法,我发现这在很多情况下都非常有限。你不能真正做到这一点,行为
是一种“特殊的”QML元素,甚至它的语法在QML语言范例中都是一个例外。我个人不喜欢这样,尤其是缺少一种指定目标的替代方法,我发现这在很多情况下都非常有限。