Qt QML ListView填充不透明度动画
我有一个Qt QML ListView填充不透明度动画,qt,listview,animation,qml,Qt,Listview,Animation,Qml,我有一个列表视图,我想为填充视图转换创建淡入效果。但它并没有像预期的那样起作用。代理的初始不透明度似乎为1.0,因此我需要从动画的属性设置。 但它看起来像一个闪光。因此,我需要将代理的初始不透明度值设置为0.0 现在我有一个新问题。。。当我轻弹列表时,代理的默认不透明度为0.0,因此它们不可见。 所以我的问题是:有人能为ListView的populate属性创建一个完美的淡入动画吗 多谢各位 import QtQuick 2.9 Rectangle { id: root pro
列表视图
,我想为填充
视图转换创建淡入效果。但它并没有像预期的那样起作用。代理的初始不透明度似乎为1.0,因此我需要从动画的属性设置。
但它看起来像一个闪光。因此,我需要将代理的初始不透明度值设置为0.0
现在我有一个新问题。。。当我轻弹列表时,代理的默认不透明度为0.0
,因此它们不可见。
所以我的问题是:有人能为ListView的populate
属性创建一个完美的淡入动画吗
多谢各位
import QtQuick 2.9
Rectangle {
id: root
property alias model: list.model
ListView {
id: list
width: 300; height: 500
model: sampleModel
spacing: 30
footer: Item { width: 1; height: 30 }
populate: Transition {
id: _popuTrans
SequentialAnimation {
PauseAnimation {
duration: 100*_popuTrans.ViewTransition.index
}
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200 }
PropertyAction { property: "opacity"; value: 1.0 }
}
}
delegate: Component {
Column {
width: parent.width
spacing: 13
opacity: 0.0
Rectangle {
width: parent.width*0.84
height: 1
color: colorPalette.altBackgroundColor
anchors.horizontalCenter: parent.horizontalCenter
}
Row {
width: parent.width
spacing: width*0.07
Text {
id: valueTxt
font { pointSize: 13 }
color: "black"
width: parent.width*0.64
text: model.body
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignRight
}
Text {
id: keyTxt
font { pointSize: 15; weight: Font.Medium }
color: "black"
width: parent.width*0.29
text: model.title
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignRight
}
}
}
}
}
ListModel {
id: sampleModel
ListElement {
title: "ابعاد"
body: "عرض: 123mm\nطول: 650mm\nارتفاع: 17mm"
}
ListElement {
title: "وزن"
body: "1.3kg"
}
ListElement {
title: "پردازنده"
body: "Qualcomm Snapdragon 835 3.1GHz"
}
ListElement {
title: "سیستم عامل"
body: "Microsoft Windows 10 Starter"
}
ListElement {
title: "رنگها"
body: "قرمز، نوک مدادی، سفید"
}
ListElement {
title: "اتصالات"
body: "2 x USB 3.1 Gen 1 Type-A\n1 x Audio jack: headphone / mic-in\n1 x Combo Nano SIM (tray with needle)\n1 x MicroSD card reader slot (supports up to 256GB)\n1 x HDMI\n1 x DC in"
}
ListElement {
title: "باتری"
body: "Li-ion 8345mAh Turbo Charge Capable"
}
ListElement {
title: "حافظه RAM"
body: "DDR4 2x8GB AData"
}
ListElement {
title: "ابعاد"
body: "عرض: 123mm\nطول: 650mm\nارتفاع: 17mm"
}
ListElement {
title: "وزن"
body: "1.3kg"
}
ListElement {
title: "پردازنده"
body: "Qualcomm Snapdragon 835 3.1GHz"
}
ListElement {
title: "سیستم عامل"
body: "Microsoft Windows 10 Starter"
}
ListElement {
title: "رنگها"
body: "قرمز، نوک مدادی، سفید"
}
ListElement {
title: "اتصالات"
body: "2 x USB 3.1 Gen 1 Type-A\n1 x Audio jack: headphone / mic-in\n1 x Combo Nano SIM (tray with needle)\n1 x MicroSD card reader slot (supports up to 256GB)\n1 x HDMI\n1 x DC in"
}
ListElement {
title: "باتری"
body: "Li-ion 8345mAh Turbo Charge Capable"
}
ListElement {
title: "حافظه RAM"
body: "DDR4 2x8GB AData"
}ListElement {
title: "ابعاد"
body: "عرض: 123mm\nطول: 650mm\nارتفاع: 17mm"
}
ListElement {
title: "وزن"
body: "1.3kg"
}
ListElement {
title: "پردازنده"
body: "Qualcomm Snapdragon 835 3.1GHz"
}
ListElement {
title: "سیستم عامل"
body: "Microsoft Windows 10 Starter"
}
ListElement {
title: "رنگها"
body: "قرمز، نوک مدادی، سفید"
}
ListElement {
title: "اتصالات"
body: "2 x USB 3.1 Gen 1 Type-A\n1 x Audio jack: headphone / mic-in\n1 x Combo Nano SIM (tray with needle)\n1 x MicroSD card reader slot (supports up to 256GB)\n1 x HDMI\n1 x DC in"
}
ListElement {
title: "باتری"
body: "Li-ion 8345mAh Turbo Charge Capable"
}
ListElement {
title: "حافظه RAM"
body: "DDR4 2x8GB AData"
}ListElement {
title: "ابعاد"
body: "عرض: 123mm\nطول: 650mm\nارتفاع: 17mm"
}
ListElement {
title: "وزن"
body: "1.3kg"
}
ListElement {
title: "پردازنده"
body: "Qualcomm Snapdragon 835 3.1GHz"
}
ListElement {
title: "سیستم عامل"
body: "Microsoft Windows 10 Starter"
}
ListElement {
title: "رنگها"
body: "قرمز، نوک مدادی، سفید"
}
ListElement {
title: "اتصالات"
body: "2 x USB 3.1 Gen 1 Type-A\n1 x Audio jack: headphone / mic-in\n1 x Combo Nano SIM (tray with needle)\n1 x MicroSD card reader slot (supports up to 256GB)\n1 x HDMI\n1 x DC in"
}
ListElement {
title: "باتری"
body: "Li-ion 8345mAh Turbo Charge Capable"
}
ListElement {
title: "حافظه RAM"
body: "DDR4 2x8GB AData"
}ListElement {
title: "ابعاد"
body: "عرض: 123mm\nطول: 650mm\nارتفاع: 17mm"
}
ListElement {
title: "وزن"
body: "1.3kg"
}
ListElement {
title: "پردازنده"
body: "Qualcomm Snapdragon 835 3.1GHz"
}
ListElement {
title: "سیستم عامل"
body: "Microsoft Windows 10 Starter"
}
ListElement {
title: "رنگها"
body: "قرمز، نوک مدادی، سفید"
}
ListElement {
title: "اتصالات"
body: "2 x USB 3.1 Gen 1 Type-A\n1 x Audio jack: headphone / mic-in\n1 x Combo Nano SIM (tray with needle)\n1 x MicroSD card reader slot (supports up to 256GB)\n1 x HDMI\n1 x DC in"
}
ListElement {
title: "باتری"
body: "Li-ion 8345mAh Turbo Charge Capable"
}
ListElement {
title: "حافظه RAM"
body: "DDR4 2x8GB AData"
}
}
}
闪烁是由于您的暂停图像
,不透明度在其整个持续时间内保持为1。下面是一个漂亮的图表,显示了在populate
转换期间代理的不透明度随时间的变化:
在暂停动画
之前,您需要将代理的不透明度设置为0,并且在填充
转换中,而不是直接在代理中(转换仅应用于可见代理,这就是为什么内容区域下方的代理保持不可见)
为此,请删除代理中的opacity:0
,只需在转换中的pauseAimation
之前添加一个PropertyAction
:
populate: Transition {
id: _popuTrans
SequentialAnimation {
PropertyAction { property: "opacity"; value: 0.0 }
PauseAnimation { duration: 100*_popuTrans.ViewTransition.index }
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.InOutQuad }
}
}
闪烁是由于您的暂停图像
,不透明度在其整个持续时间内保持为1。下面是一个漂亮的图表,显示了在populate
转换期间代理的不透明度随时间的变化:
在暂停动画
之前,您需要将代理的不透明度设置为0,并且在填充
转换中,而不是直接在代理中(转换仅应用于可见代理,这就是为什么内容区域下方的代理保持不可见)
为此,请删除代理中的opacity:0
,只需在转换中的pauseAimation
之前添加一个PropertyAction
:
populate: Transition {
id: _popuTrans
SequentialAnimation {
PropertyAction { property: "opacity"; value: 0.0 }
PauseAnimation { duration: 100*_popuTrans.ViewTransition.index }
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.InOutQuad }
}
}
我也这么认为。但这不是唯一的问题。填充
-转换似乎存在一些问题。一旦给它分配了任何内容,它就会把实例化搞砸。@derM这在这里似乎工作得很好,有什么问题吗?如果我有一个简单的ListView{model:100;anchors.fill:parent;space:3;delegate:Rectangle{width:100;height:20;color:“red”}
我在屏幕上画了一些比如说20个矩形。一旦我将任何转换设置为populate
这就中断了-我只得到了一手,比如1或7或8画。。。我的猜测是,这与ListView
s忽略布局上完全透明的元素有关。这可能与填充应用程序窗口时更改列表视图的大小有关。我会调查的,我也这么认为。但这不是唯一的问题。填充
-转换似乎存在一些问题。一旦给它分配了任何内容,它就会把实例化搞砸。@derM这在这里似乎工作得很好,有什么问题吗?如果我有一个简单的ListView{model:100;anchors.fill:parent;space:3;delegate:Rectangle{width:100;height:20;color:“red”}
我在屏幕上画了一些比如说20个矩形。一旦我将任何转换设置为populate
这就中断了-我只得到了一手,比如1或7或8画。。。我的猜测是,这与ListView
s忽略布局上完全透明的元素有关。这可能与填充应用程序窗口时更改列表视图的大小有关。我会调查的。