He hecho una QML componente button y he utilizado un componente denominado ColorImage
para el icono. Después de buscar una forma de cambiar el color de la imagen. Me enteré de que Qt no apoyo ColorOverlay
Hover, me acaba de escribir en 'color' en Qt Estudio de Diseño y ColorImage
apareció. Traté de encontrar la documentación en línea, pero no pudo encontrar nada. Sin embargo, cuando me decidí a probarlo, funciona como yo esperaba:
Este es el código de mi botón:
contentItem: ColorImage {
id: buttonIcon
source: imageSource
fillMode: Image.PreserveAspectFit
height: parent.height
color: iconColor
anchors.fill: actionBarButton
anchors.margins: 4
}
Cuando el hovered
estado del botón se convierte en true
permite que el siguiente estado:
State {
when: (hovered && !checked)
name: "hoveredNotChecked"
PropertyChanges {
target: buttonIcon
color: "white"
}
PropertyChanges {
target: buttonBackground
color: iconColor
}
},
que se intercambia el icono y el color de fondo del botón.
Esto funciona en la vista previa de la Qt Designer. Sin embargo, cuando intento ejecutarlo desde Pyside, me dice: ColorImage is not a type
y simplemente no se puede cargar en el botón.
Traté de encontrar documentación sobre ColorImage
para averiguar que tal vez hay una importación falta. Sin embargo, no pude subir nada. Qt Designer ayuda interna no algo así. Es como si este componente no existe. Pero lo hace, y se trabaja en el Estudio de Diseño.
Aquí está el código completo para mi botón:
Button {
id: actionBarButton
property color iconColor: "red"
property color backgroundColor: "blue"
property string toolTipText: "Play video!"
property string imageSource: "images/round_play_arrow_white_36dp.png"
property string imageSourceChecked: "images/round_play_arrow_white_36dp.png"
states: [
State {
when: (hovered && !checked)
name: "hoveredNotChecked"
PropertyChanges {
target: buttonIcon
color: "white"
}
PropertyChanges {
target: buttonBackground
color: iconColor
}
},
State {
when: (hovered && checked)
name: "hoveredChecked"
PropertyChanges {
target: buttonIcon
source: imageSourceChecked
color: "white"
}
PropertyChanges {
target: buttonBackground
color: iconColor
}
},
State {
when: checked
name: "checked"
PropertyChanges {
target: buttonIcon
source: imageSourceChecked
}
}
]
transitions: Transition {
ColorAnimation {
duration: 300
}
}
contentItem: ColorImage {
id: buttonIcon
source: imageSource
fillMode: Image.PreserveAspectFit
height: parent.height
color: iconColor
anchors.fill: actionBarButton
anchors.margins: 4
}
onHoveredChanged: {
}
background: Rectangle {
id: buttonBackground
color: backgroundColor
anchors.fill: actionBarButton
}
ToolTip.delay: 1000
ToolTip.timeout: 5000
ToolTip.visible: hovered
ToolTip.text: actionBarButton.toolTipText
}
Así es como se ve en el diseñador:
Alguien me puede ayudar a averiguar por qué se queja acerca de ColorImage
no siendo un tipo cuando lanzo?
Editar:
Las importaciones en el archivo de arriba:
import QtQuick 2.15
import QtQuick.Controls 2.15