ScrollArea中滚动条定位有关问题

ScrollArea中滚动条定位问题
我在TabWidget的一个tab页中放了一个ScrollArea,这个区域中添加了很多等大小的Widget,并且这些widget的个数以及排列的行数列数,间距已知,当我想选中一个widget的时候,如何精确的计算出滚动条应该滚动的距离,使滚动条准确的滚动到理想的位置上。
我现在用目标widget所在的行数,除以总的行数,得到的比例值再乘上滚动条的最大行程距离。可是这样的做法会出现个别widget选中时,滚动条滚动位置不准确的情况,我应该怎样做才能使计算的位置更准确,或者有哪里的距离我没有考虑到。

------解决方案--------------------
比值建议用qreal,或者float这类的带小数点的,用int会导致偏移。
------解决方案--------------------
滚动条直接设置setValue(行数*(行高+间距))