У тебя ширина виджета фиксирована в 100 пикселей что ли? Сделай лучше
`setVolume (event->x () * 200 / width ());