Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Границы QGraphicsItem произвольной формы


Автор: TechnoMag 14.7.2015, 14:29
Подкажите пожалуйста, как сделать так, чтобы hoverEvent выполнялся когда мышка пересекает реальные границы изображения, а не квадратные границы?
Нюанс еще в том, что изображения будут находится рядом друг с другом, без прксельных пробелов.

Автор: math64 15.7.2015, 08:50
Для этого нужно переопределить QPainterPath shape() const
Одновременно с ним нужно переопределять QRectF boundingRect() const (должен включать в себя shape())  и void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) (должен рисовать только внутри shape())

Добавлено через 9 минут и 8 секунд
PS: ещё нужно переоределить bool    contains ( const QPointF & point ) const
и если используется прозрачность QPainterPath opaqueArea () const
Чтобы меньше возиться, можно унаследоваться от QGraphicsPathItem

Автор: math64 15.7.2015, 09:10
или QGraphicsPolygonItem - если границы имеют форму полигона

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)