Более чистый способ рассмотрения одного или нескольких детей
<div>
{ React.Children.map(this.props.children, child => React.cloneElement(child, {...this.props}))}
</div>
В общем случае вы можете создать свойство null и использовать сигнал, который выдается, когда есть изменение для вызова requestPaint()
, а в onPaint()
вы рисуете круг, который эмулирует точку.
import QtQuick 2.0
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
property var drawPoint: null
onDrawPointChanged: canv.requestPaint()
ColumnLayout {
anchors.fill: parent
anchors.margins: 9
Button {
height: 40
Layout.fillWidth: true
text: qsTr("Random Point")
onClicked: drawPoint = Qt.point(Math.random()*canv.width ,Math.random()*canv.height);
}
Canvas {
id: canv
Layout.fillWidth: true
Layout.fillHeight: true
onPaint: {
var ctx = getContext("2d");
ctx.fillStyle = Qt.rgba(1, 1, 1, 1);
ctx.fillRect(0, 0, width, height);
if(drawPoint !== null){
ctx.beginPath();
ctx.arc(drawPoint.x, drawPoint.y, 5, 0, 2 * Math.PI);
ctx.fillStyle = Qt.rgba(1, 0, 0, 1);
ctx.fill()
ctx.strokeStyle = Qt.rgba(1, 0, 0, 1);
ctx.stroke();
}
}
}
}
}