コード例 #1
0
ファイル: custom.py プロジェクト: ccwanggl/novelWriter
    def paintEvent(self, theEvent):
        """Custom implementation of the label painter that rotates the
        label 90 degrees.
        """
        pObj = QStylePainter(self)
        oObj = QStyleOptionTab()

        for i in range(self.count()):
            self.initStyleOption(oObj, i)
            pObj.drawControl(QStyle.CE_TabBarTabShape, oObj)
            pObj.save()

            oSize = oObj.rect.size()
            oSize.transpose()
            oRect = QRect(QPoint(), oSize)
            oRect.moveCenter(oObj.rect.center())
            oObj.rect = oRect

            oCenter = self.tabRect(i).center()
            pObj.translate(oCenter)
            pObj.rotate(90)
            pObj.translate(-oCenter)
            pObj.drawControl(QStyle.CE_TabBarTabLabel, oObj)
            pObj.restore()

        return
コード例 #2
0
    def paintEvent(self, event):
        """绘制事件"""
        text = self.text()
        option = QStyleOptionButton()
        self.initStyleOption(option)
        option.text = ''  # 不绘制文字
        painter = QStylePainter(self)
        painter.setRenderHint(QStylePainter.Antialiasing)
        painter.setRenderHint(QStylePainter.HighQualityAntialiasing)
        painter.setRenderHint(QStylePainter.SmoothPixmapTransform)
        painter.drawControl(QStyle.CE_PushButton, option)
        # 变换坐标为正中间
        painter.translate(self.rect().center())
        painter.rotate(self._angle)  # 旋转

        # 绘制图片
        if self._pixmap and not self._pixmap.isNull():
            w = self.width()
            h = self.height()
            pos = QPointF(-self._pixmap.width() / 2,
                          -self._pixmap.height() / 2)
            painter.drawPixmap(pos, self._pixmap)
        elif text:
            # 在变换坐标后的正中间画文字
            fm = self.fontMetrics()
            w = fm.width(text)
            h = fm.height()
            rect = QRectF(0 - w * 2, 0 - h, w * 2 * 2, h * 2)
            painter.drawText(rect, Qt.AlignCenter, text)
        else:
            super(RotateButton, self).paintEvent(event)
コード例 #3
0
ファイル: FontRotate.py プロジェクト: xiliangjianke/PyQt
 def paintEvent(self, _):
     option = QStyleOptionButton()
     self.initStyleOption(option)
     painter = QStylePainter(self)
     if self._rotateAnimationStarted:
         option.text = ""
     painter.drawControl(QStyle.CE_PushButton, option)
     if not self._rotateAnimationStarted:
         return
     painter.save()
     font = self.font()
     font.setPointSize(self.fontSize)
     font.setFamily("FontAwesome")
     painter.setFont(font)
     # 变换坐标为正中间
     painter.translate(self.rect().center())
     # 旋转90度
     painter.rotate(self._rotateAnimation.currentValue() * 30)
     fm = self.fontMetrics()
     # 在变换坐标后的正中间画文字
     w = fm.width(self.LoadingText)
     h = fm.height()
     painter.drawText(QRectF(0 - w * 2, 0 - h, w * 2 * 2, h * 2),
                      Qt.AlignCenter, self.LoadingText)
     painter.restore()
コード例 #4
0
 def paintEvent(self, event):
     painter = QStylePainter(self)
     painter.rotate(self.buttonRotation)
     if self.buttonRotation == VerticalRotation.left_side:
         painter.translate(-1 * self.height(), 0)
     elif self.buttonRotation == VerticalRotation.right_side:
         painter.translate(0, -1 * self.width())
     painter.drawControl(QStyle.CE_PushButton, self.getSyleOptions())
コード例 #5
0
 def paintEvent(self, event):
     """绘制事件"""
     painter = QStylePainter(self.clazz)
     width = self.clazz.width() / 2
     height = self.clazz.height() / 2
     if self.direction in ("clockwise", "anticlockwise"):
         painter.translate(width, height)    # 设置中心为旋转的中心
         painter.rotate(self.rotate)
         painter.translate(-width, -height)    # 将原点复位
     painter.drawControl(self.getControlElement(), self.getSyleOptions())
コード例 #6
0
 def paintEvent(self, event):
     p = QStylePainter(self)
     p.rotate(90)
     p.translate(0, - self.width())
     opt = QStyleOptionButton()
     opt.initFrom(self)
     opt.text = self.text()
     if self.isChecked():
         opt.state |= QStyle.State_On
     s = opt.rect.size().transposed()
     opt.rect.setSize(s)
     p.drawControl(QStyle.CE_PushButton, opt)
コード例 #7
0
 def paintEvent(self, event):
     p = QStylePainter(self)
     p.rotate(90)
     p.translate(0, -self.width())
     opt = QStyleOptionButton()
     opt.initFrom(self)
     opt.text = self.text()
     if self.isChecked():
         opt.state |= QStyle.State_On
     s = opt.rect.size().transposed()
     opt.rect.setSize(s)
     p.drawControl(QStyle.CE_PushButton, opt)
コード例 #8
0
def paintEvent(self, event):
    painter = QStylePainter(self)
    if self.orientation == 'west':
        # 设置中心为旋转的中心
        painter.translate(self.width() / 2, self.height() / 2)
        painter.rotate(90)
        # 将原点复位
        painter.translate(-self.width() / 2, -self.height() / 2)
        # painter.translate(0, -1 * self.width())
    elif self.orientation == 'east':
        painter.rotate(270)
        # painter.translate(-1 * self.height(), 0)
    else:
        raise TypeError
    painter.drawControl(QStyle.CE_PushButton, self.getSyleOptions())
コード例 #9
0
    def paintEvent(self, event):
        painter = QStylePainter(self)
        opt = QStyleOptionTab()

        for i in range(self.count()):
            self.initStyleOption(opt, i)
            painter.drawControl(QStyle.CE_TabBarTabShape, opt)
            painter.save()

            s = opt.rect.size()
            s.transpose()
            r = QRect(QPoint(), s)
            r.moveCenter(opt.rect.center())
            opt.rect = r

            c = self.tabRect(i).center()
            painter.translate(c)
            painter.rotate(270)
            painter.translate(-c)
            painter.drawControl(QStyle.CE_TabBarTabLabel, opt)
            painter.restore()
コード例 #10
0
 def paintEvent(self, event):
     '''绘制事件'''
     if not self._timer.isActive():
         return super(LinkButton, self).paintEvent(event)
     if self._direction in ("clockwise", "anticlockwise"):
         option = QStyleOptionButton()
         self.initStyleOption(option)
         option.text = ""  # 不让其绘制文字
         painter = QStylePainter(self)
         painter.drawControl(QStyle.CE_PushButton, option)
         # 变换坐标为正中间
         painter.translate(self.rect().center())
         painter.rotate(self._rotate)  # 旋转
         fm = self.fontMetrics()
         # 在变换坐标后的正中间画文字
         w = fm.width(self.text())
         h = fm.height()
         painter.drawText(QRectF(0 - w * 2, 0 - h, w * 2 * 2, h * 2),
                          Qt.AlignCenter, self.text())
         return
     super(LinkButton, self).paintEvent(event)
コード例 #11
0
ファイル: customWidget.py プロジェクト: wqslucifer/MLTools
 def paintEvent(self, event: QPaintEvent):
     painter = QStylePainter(self)
     if self.orientation == self.Vertical:
         painter.rotate(270)
         painter.translate(-1 * self.height(), 0)
     painter.drawControl(QStyle.CE_PushButton, self.getStyleOptions())