Никогда не работал QPainterPath, но есть градиентный метод
C++ (Qt)
QPointF p0 = path.pointAtPercent(t);
QPointF p1 = path.pointAtPercent(t + dt);
Тогда разница p1-p0 = касательная в точке, повернутая на PI/2 = нормаль. Более гладкий рез-т дает "вторая разница" F(t + dt) - F(t - dt). Шаг dt должен быть достаточно мал но не с потерей точности (это типовая проблема).