qtdoc/examples/demos/calqlatr/content/CalculatorButton.qml

68 lines
1.8 KiB
QML
Raw Normal View History

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
RoundButton {
id: button
implicitWidth: 38
implicitHeight: 38
radius: buttonRadius
property bool dimmable: false
property bool dimmed: false
readonly property int fontSize: 22
readonly property int buttonRadius: 8
property color textColor: "#FFFFFF"
property color accentColor: "#2CDE85"
readonly property color backgroundColor: "#222222"
readonly property color borderColor: "#A9A9A9"
function getBackgroundColor() {
if (button.dimmable && button.dimmed)
return backgroundColor
if (button.pressed)
return accentColor
return backgroundColor
}
function getBorderColor() {
if (button.dimmable && button.dimmed)
return borderColor
if (button.pressed || button.hovered)
return accentColor
return borderColor
}
function getTextColor() {
if (button.dimmable && button.dimmed)
return Qt.darker(textColor)
if (button.pressed)
return backgroundColor
if (button.hovered)
return accentColor
return textColor
}
background: Rectangle {
radius: button.buttonRadius
color: getBackgroundColor()
border.color: getBorderColor()
}
contentItem: Text {
text: button.text
font.pixelSize: button.fontSize
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: getTextColor()
Behavior on color {
ColorAnimation {
duration: 120
easing.type: Easing.OutElastic
}
}
}
}