Russian Qt Forum

Qt => Общие вопросы => Тема начата: pakulo от Июль 07, 2007, 14:13



Название: QRect
Отправлено: pakulo от Июль 07, 2007, 14:13
Должна ли rect.width()
равняться
rect.right() - rect.left()

может и глупый вопрос, но я не могу понять почему ширина на 1 пиксель больше


Название: QRect
Отправлено: Dendy от Июль 13, 2007, 22:38
А width() на единицу больше потому что прямоугольник под капотом Qt выглядит так:

****
*---*
****

Ширина = 4, а right()-left() = 4-1 = 3. Потому и меньше, что координаты ориентированы на пиксель (целый квадратик), а не на точку (угол квадратика).


Название: Re: QRect
Отправлено: Литий от Январь 09, 2008, 15:11
Дело в том, что есть два подхода, что считать правой границей прямоугольника - по одному из них правая граница в прямоугольник включается, а по другому - нет. Именно поэтому, скажем, right(), bottom() не совпадает с bottomRight()... Вообще использовать эти поля не рекомендуется.