давай так. какие у тебя входные данные? т.е. по каким данным ты собираешься строить стрелку?
глядя на картинку, предполагаю, что у тебя всё нарисовано кроме стрелки (соответственно, в qml доступны все видимые объекты). из С++ будет приходить значение «скорости» от 0 до 1.2?
«невидимый прямоугольник» — это ж просто координаты обрамляющего стрелку прямоугольника, насколько я понимаю?
1. Все размеры каждого обьекта это все из С++, и для ширины и длинны стрелки так же есть данные. Есть значение на которое стрелка должна будет поворачиватся, то есть для угла так же значения имеются.
2. Невидимы прямоугольник - как первый вариант что я описал выше да, это по сути было бы обрамлением. Но как я писал выше надо будет из qml послать нужные значения о нем в С++, получить все точки и массивом послать обратно. Но вот как определить левую и правую сторону его чтоыб стрелка правильно смотрела, это я вообще не моуг представить.
Но при другмо варианте без прямоугольника нужно бы было высчитывать все точки не в прямоугольнике а в общем области тахометра.
Это пока начальынй набросок кода.
Rectangle
{
id: root
property QtObject pelData
property real needleData
height: pelData.needle.needleLength
width: pelData.needle.needleWidth
color:"blue"
Component.onCompleted:
console.log(pelData.valueNeedleData, pelData.needle.needleLength)
Shape
{
height: root.size
width: root.size
layer.enabled: true
layer.samples: 8
ShapePath
{
id: trackShapePath
capStyle: Qt.FlatCap
fillColor: "transparent"
strokeColor: "red"
strokeWidth: pelData.mainCircleBorderWidth
PathPolyline {
id: ppl
path: [ Qt.point(0.0, 0.0),
Qt.point(3.0, 5.0),
Qt.point(5.0, 8.0),
Qt.point(8.0, 0.0)
]
}
}
}
}