Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Ground от Июня 14, 2012, 15:29



Название: Скругленные углы у прямоугольника
Отправлено: Ground от Июня 14, 2012, 15:29
Доброго времени суток!
Мне нужно сделать одинаковый коэффициент скругления углов у прямоугольников любой ширины и высоты, никак не могу понять как задать этот коэффициент без связи с шириной и высотой фигуры. Пробовал даже рисовать с использованием параметра Qt::RelativeSize, но все равно не работает. Что я делаю не так?


Название: Re: Скругленные углы у прямоугольника
Отправлено: kambala от Июня 14, 2012, 16:16
когда я рисовал через QPainterPath, то константа для скругления работала


Название: Re: Скругленные углы у прямоугольника
Отправлено: Ground от Июня 14, 2012, 16:30
Ну вот я рисую два прямоугольника с параметрами xRadius = 5, yRadius = 25. Поверх них рисую заливку (оранжевый передний фон) с аналогичными параметрами. В итоге выходит такая вот ерунда, как на изображении.
Подумал было на то, что изображение обрезается. Проверил рамки. boundingRect - QRectF(0,0 626x322), roundedRect - QRect(0,0 626x322). Т.е. вроде бы все корректно прорисовывается и умещается в границы.
(http://habrastorage.org/storage2/5a8/848/634/5a8848634ff6bdff4cb030a78184ad5a.png)


Название: Re: Скругленные углы у прямоугольника
Отправлено: Ground от Июня 14, 2012, 16:39
Решение найдено.
Берем значение длины width и высоты height. Выбираем константное значение coeff. Тогда:
xRadius = coeff;
yRadius = coeff * width / height;

Для черных прямоугольников значение coeff = 5, если вдруг кому понадобится.