Kuesa Drill-Experience QML Example
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15
import Drill 1.0
Item {
property ScreenController controller
Repeater {
id: labelsRepeater
model: enabled ? controller.partLabels : 0
enabled: controller.mode === ScreenController.UserManualMode
Item {
Layout.alignment: Qt.AlignHCenter
x: model.modelData.position.x
y: model.modelData.position.y
scale: mouseArea.pressed ? 0.9 : 1
Behavior on scale { ScaleAnimator { duration: 300 } }
width: label.implicitWidth * 2
height: label.implicitHeight
readonly property bool isClickable: model.modelData.part !== ScreenController.NoPartSelected
visible: controller.selectedPart === ScreenController.NoPartSelected ||
model.modelData.part === controller.selectedPart
Rectangle {
visible: isClickable
id: handle
anchors {
left: parent.left
verticalCenter: parent.verticalCenter
margins: 2
}
height: label.fontInfo.pixelSize * 1.5
width: height
radius: width * 0.5
color: "transparent"
border {
width: 1
color: "white"
}
Rectangle {
anchors {
fill: parent
margins: 5
}
radius: width * 0.5
color: "white"
opacity: mouseArea.containsMouse ? 1 : 0
Behavior on opacity { OpacityAnimator { duration: 300 } }
}
}
Label {
id: label
text: model.modelData.labelName
anchors {
left: handle.right
leftMargin: 15
verticalCenter: parent.verticalCenter
}
font.pointSize: 15
font.bold: mouseArea.containsMouse
}
MouseArea {
id: mouseArea
enabled: isClickable
anchors.fill: parent
onClicked: controller.selectedPart = model.modelData.part
hoverEnabled: true
}
}
}
}