В любом случае вам придётся переопределять этот метод. будь это эллипс или сложный полигон.
У меня таких объектов много.
Как делать.
QPainterPath YourClass::shape() const
{
QPainterPath path;
path.addPolygon(somePolygon1);
path.addPolygon(somePolygon2);
...
path.addRect(rect1);
path.addEllipse(...);
return path;
}
QRectF YourClass::boundingRect() const
{
return shape().boundingRect().simplified(); //для убирания наложения полигонов и прочих объектов
}
Еще есть такой нюанс, который я выяснил довольно позлно, что если нужно объеденить несколько полигонов и получить в результате их суммирующую форму, то простое добавление к path не поможет, так как по сути path будет состоять из продолжающихся полигонов друг за другом, что в конечном итоге не то что надо, тогда следует делать так
QPainterPath path;
path.addPolygon(poly1);
QPainterPath path2;
path2.addPolygon(poly2);
path |= path2;
return path;
Такой код даст правильный резултат наложения нескольких фигур друг на друга без "дырок" в областях наложения.