def __init__(self, rect, parent=None): QtGui.QGraphicsRectItem.__init__(self, rect, parent) self.__resizing = False self.__handlePoly = QtGui.QPolygonF([ QtCore.QPointF(0, -self.__handleSize), QtCore.QPointF(0, 0), QtCore.QPointF(-self.__handleSize, 0) ]) self.setFlag(QtGui.QGraphicsItem.ItemStacksBehindParent) # -- handle -- self.__handlePos = QtCore.QPointF(0, 0) # -- header -- self.__headerContentRect = None self.__headerRect = None # -- color -- self.__color = None self.__darkerColor = None self.__shadowColor = None self.setColor(self.__defaultColor.darker(110)) # -- optionnal cosmetics -- if safeEffects: fx = QtGui.QGraphicsDropShadowEffect() fx.setOffset(2, 2) fx.setBlurRadius(5) self.setGraphicsEffect(fx)
def shape(self): path = QtGui.QPainterPath() # Enlarge selection zone diff = self.p2 - self.p1 if (abs(diff.x()) > abs(diff.y())): dp = QtCore.QPointF(0, 10) else: dp = QtCore.QPointF(10, 0) p1 = self.p1 - dp p2 = self.p1 + dp p3 = self.p2 + dp p4 = self.p2 - dp poly = QtGui.QPolygonF([p1, p2, p3, p4]) path.addPolygon(poly) return path