Time for action – drawing a heartbeat

We will extend our component now and implement its main functionality–drawing a heartbeat-like diagram.

Add the following property declarations to canvas:

property int lineWidth: 2
property var points: []
property real arg: -Math.PI

Below, add a declaration for a timer that will drive the whole component:

Timer {
  interval: 10
  repeat: true
  running: true
  onTriggered: {
    arg += Math.PI/180
    while(arg >= Math.PI) arg -= 2*Math.PI
  }
}

Then, define the handler for when the value of arg is modified:

onArgChanged: {
  points.push(func(arg))
  points = points.slice(-canvas.width)
  canvas.requestPaint()
}

Then, implement func:

function func(argument) { var a=(2*Math.PI/10); var b=4*Math.PI/5 return Math.sin(20*argument) * ( Math.exp(-Math.pow(argument/a, ...

Get Game Programming Using Qt now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.