按下时更改 SwipeDelegate 的颜色
Change color of SwipeDelegate when pressed
我有一个包含 ListView with a few SwipeDelegates.
的简单 Qt Quick 应用程序
import QtQuick 2.12
import QtQuick.Controls 2.15
import QtQuick.Window 2.12
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
ListView {
id: list
anchors.fill: parent
model: ListModel {
id: listView
ListElement { name: "Element 1" }
ListElement { name: "Element 2" }
ListElement { name: "Element 3" }
ListElement { name: "Element 4" }
}
delegate: SwipeDelegate {
contentItem: Text {
width: parent.width
text: name
}
swipe.right: Label {
id: deleteLabel
text: qsTr("Delete")
color: "white"
verticalAlignment: Label.AlignVCenter
padding: 12
height: parent.height
anchors.right: parent.right
background: Rectangle {
color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
}
}
}
}
}
在不设置任何背景颜色的情况下,它们显示为灰色背景,如果我按下(或按住)某个项目,背景颜色会变暗:
我想将 'highlighted' 颜色更改为其他颜色,例如绿色。我希望根据 onPressed 事件设置背景颜色会对我有所帮助,但是将 background: Rectangle { color: "green" }
添加到 SwipeDelegate 作为测试会在完全按下时删除较暗的 'highlight'。
有没有办法自定义高亮颜色?
如果是supports palettes, you can set the relevant palette role. For the Default style ("Basic" in Qt 6), it assigns its background colour like so的风格:
color: Color.blend(control.down ? control.palette.midlight : control.palette.light,
control.palette.highlight, control.visualFocus ? 0.15 : 0.0)
因此,如果您正在使用该样式,则可以在委托上设置 属性:
palette.midlight: "green"
如果样式不支持调色板,您有以下几种选择:
- 创建一个Binding到相关的属性。
- 在 Component.onCompleted 中分配颜色。
- 自己写background.
我有一个包含 ListView with a few SwipeDelegates.
的简单 Qt Quick 应用程序import QtQuick 2.12
import QtQuick.Controls 2.15
import QtQuick.Window 2.12
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
ListView {
id: list
anchors.fill: parent
model: ListModel {
id: listView
ListElement { name: "Element 1" }
ListElement { name: "Element 2" }
ListElement { name: "Element 3" }
ListElement { name: "Element 4" }
}
delegate: SwipeDelegate {
contentItem: Text {
width: parent.width
text: name
}
swipe.right: Label {
id: deleteLabel
text: qsTr("Delete")
color: "white"
verticalAlignment: Label.AlignVCenter
padding: 12
height: parent.height
anchors.right: parent.right
background: Rectangle {
color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
}
}
}
}
}
在不设置任何背景颜色的情况下,它们显示为灰色背景,如果我按下(或按住)某个项目,背景颜色会变暗:
我想将 'highlighted' 颜色更改为其他颜色,例如绿色。我希望根据 onPressed 事件设置背景颜色会对我有所帮助,但是将 background: Rectangle { color: "green" }
添加到 SwipeDelegate 作为测试会在完全按下时删除较暗的 'highlight'。
有没有办法自定义高亮颜色?
如果是supports palettes, you can set the relevant palette role. For the Default style ("Basic" in Qt 6), it assigns its background colour like so的风格:
color: Color.blend(control.down ? control.palette.midlight : control.palette.light,
control.palette.highlight, control.visualFocus ? 0.15 : 0.0)
因此,如果您正在使用该样式,则可以在委托上设置 属性:
palette.midlight: "green"
如果样式不支持调色板,您有以下几种选择:
- 创建一个Binding到相关的属性。
- 在 Component.onCompleted 中分配颜色。
- 自己写background.