When using qBound in combination with qreal, it is important to properly cast the upper and lower bounds, e.g.:
qreal x = qBound(qreal(0.2), v, qreal(1.5));
If you forget this, i.e by using the following code:
qreal x = qBound(0.2, v, 1.5);
Your code will happily work on x86, and some other platforms, but not on Arm. This is because qreal is a double on all other platforms than Arm. On Arm, it is a float. This leads to GCC complaining about not being able to instantiate the template.