def paintEvent(self, ev): if self.mouse_over: p = QStylePainter(self) tool = QStyleOption() tool.initFrom(self) tool.rect = self.rect() tool.state = QStyle.StateFlag.State_Raised | QStyle.StateFlag.State_Active | QStyle.StateFlag.State_MouseOver p.drawPrimitive(QStyle.PrimitiveElement.PE_PanelButtonTool, tool) p.end() return QLabel.paintEvent(self, ev)
def paintEvent(self, ev): painter = QStylePainter(self) opt = QStyleOptionToolButton() self.initStyleOption(opt) text = opt.text opt.text = '' opt.icon = QIcon() s = painter.style() painter.drawComplexControl(QStyle.ComplexControl.CC_ToolButton, opt) if s.styleHint(QStyle.StyleHint.SH_UnderlineShortcut, opt, self): flags = self.text_flags | Qt.TextFlag.TextShowMnemonic else: flags = self.text_flags | Qt.TextFlag.TextHideMnemonic fw = s.pixelMetric(QStyle.PixelMetric.PM_DefaultFrameWidth, opt, self) opt.rect.adjust(fw, fw, -fw, -fw) w = opt.iconSize.width() text_rect = opt.rect.adjusted(w, 0, 0, 0) painter.drawItemText(text_rect, flags, opt.palette, self.isEnabled(), text) fm = QFontMetrics(opt.font) text_rect = s.itemTextRect(fm, text_rect, flags, self.isEnabled(), text) left = text_rect.left() - w - 4 pixmap_rect = QRect(left, opt.rect.top(), opt.iconSize.width(), opt.rect.height()) painter.drawItemPixmap(pixmap_rect, Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter, self.icon().pixmap(opt.iconSize))
def paintEvent(self, ev): p = QStylePainter(self) p.drawPrimitive(QStyle.PrimitiveElement.PE_IndicatorToolBarSeparator, self.style_option())
def paintEvent(self, ev): shown = self.button.isChecked() ls = self.fm.lineSpacing() painter = QStylePainter(self) if self.mouse_over: tool = QStyleOption() tool.initFrom(self) tool.rect = self.rect() tool.state = QStyle.StateFlag.State_Raised | QStyle.StateFlag.State_Active | QStyle.StateFlag.State_MouseOver painter.drawPrimitive(QStyle.PrimitiveElement.PE_PanelButtonTool, tool) painter.drawText( 0, 0, self.width(), ls, Qt.AlignmentFlag.AlignCenter | Qt.TextFlag.TextSingleLine, self.text) text = _('Hide') if shown else _('Show') f = self.font() f.setBold(True) painter.setFont(f) painter.drawText( 0, self.height() - ls, self.width(), ls, Qt.AlignmentFlag.AlignCenter | Qt.TextFlag.TextSingleLine, text) x = (self.width() - ICON_SZ) // 2 y = ls + (self.height() - ICON_SZ - 2 * ls) // 2 pmap = self.bright_icon if shown else self.dull_icon painter.drawPixmap(x, y, pmap) painter.end()