Programuję w Qt aplikację Qt Quick. Program rysuje łuk. Chciałbym, żeby po kliknięciu na mouseArea10 usuwał to, co narysował. Ktoś ma pomysł dlaczego nie działa albo jak to powinno wyglądać? Wstawiam kod w formie tekstu (EDIT wcześniej wkleiłem słabo widoczny zrzut), bo nie ma wyszczególnionego języka QML, a wybierając JavaScript nie działa. Oczywiście sam sygnał onClicked działa, coś jest nie tak z dalszym poleceniem.
import QtQuick 2.4
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Extras 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
ApplicationWindow {
visible: true
width: 1050
height: 700
color: "#b09273"
title: qsTr("Hello World")
MainForm {
anchors.fill: parent
id: mainform
mouseArea10.onClicked: {mojCanvas.context.clearRect(0, 0, mojCanvas.width, mojCanvas.height)}
}
Canvas {
id:mojCanvas
width: 1050
height: 590
anchors.top: parent.top
anchors.topMargin: 55
anchors.bottom: parent.bottom
anchors.bottomMargin: 55
anchors.left: parent.left
anchors.right: parent.right
contextType: "2d"
Path {
id: myPath
startX: 450; startY: 590
PathArc {
x: 0; y: 269.30848034096934944;
radiusX: 332.8125 / Math.sin(mainform.dial1.value * Math.PI / 180); radiusY: 332.8125 / Math.sin(mainform.dial1.value * Math.PI / 180);
useLargeArc: false
direction: PathArc.Counterclockwise
}
}
onPaint: {
context.strokeStyle = "indigo";
context.lineWidth = 3;
context.path = myPath;
context.stroke();
}
}
}