def styleChange(self): super().styleChange() style = self.style() # Text item ---------------------------------------------------------------------------------------------------- self._text_item.setFont(style.font(Style.MessageTextFont)) self._text_item.setMaximumWidth(style.pixelMetric(Style.MessageTextLength)) # Position text_metrics = QFontMetricsF(self._text_item.font()) icon_size = style.pixelMetric(Style.MessageIconSize) margin = style.pixelMetric(Style.MessageIconTextMargin) self._text_item.setPos(icon_size + margin, 0) self._text_item.moveBy(0, text_metrics.capHeight() / 2) self._text_item.moveBy(0, icon_size / 2) # Icon item ---------------------------------------------------------------------------------------------------- icon_renderer = self._icon_item.renderer() if icon_renderer is None: # No icon set scale = 1 else: scale = icon_size / icon_renderer.defaultSize().width() self._icon_item.setScale(scale)
def styleChange(self): self.prepareGeometryChange() style = self.style() # Size and Frame frame_width = style.pixelMetric(Style.NodeWidth) self._size.setWidth(frame_width) self._body_item.setPen(style.framePen(self.palette())) path = QPainterPath() path.addRoundedRect(QRectF(QPointF(), self.size()), style.pixelMetric(Style.NodeFrameCornerRadius), style.pixelMetric(Style.NodeFrameCornerRadius)) self._body_item.setPath(path) # Title item title_font = style.font(Style.NodeTitleFont) title_metrics = QFontMetricsF(title_font) padding = style.pixelMetric(Style.NodeFrameTextPadding) self._title_item.setFont(title_font) self._title_item.setPos(padding, padding) self._title_item.moveBy(0, title_metrics.capHeight()) self._title_item.setMaximumWidth(frame_width - padding * 2) # Divider item div_margin = style.pixelMetric(Style.NodeDividerTextMargin) div_voffset = padding + title_metrics.capHeight( ) + title_metrics.descent() + div_margin self._divider.setLine(0, div_voffset, frame_width, div_voffset) self._divider.setPen(style.framePen(self.palette())) # Description item self._description_item.setFont(style.font(Style.NodeDescriptionFont)) self._description_item.setPos(padding, div_voffset + div_margin) self._description_item.setFrame( QRectF( QPointF(0, 0), QSizeF( px(frame_width) - padding * 2, (px(self.size().height()) - padding) - (div_voffset + padding))))
def styleChange(self): super().styleChange() self.prepareGeometryChange() style = self.style() margin = style.pixelMetric(Style.ConnectionStemTextMargin) metrics = QFontMetricsF(self._text_item.font()) self._stem_item.setLine(QLineF(self.stemRoot(), self.stemTip())) self._text_item.setPos(self.stemTip().x() + margin, metrics.capHeight() / 2)