qt将widget形状改为圆形
时间: 2023-11-29 15:07:08 浏览: 120
要将QWidget的形状更改为圆形,可以使用QPainterPath和setMask()函数。下面是一个简单的示例:
```python
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainterPath, QPainter, QRegion
from PyQt5.QtCore import Qt
class CircleWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setFixedSize(100, 100) # 设置固定大小
self.setWindowFlags(Qt.FramelessWindowHint) # 隐藏标题栏
self.setAttribute(Qt.WA_TranslucentBackground) # 设置透明背景
# 创建圆形路径
path = QPainterPath()
path.addEllipse(0, 0, self.width(), self.height())
# 创建遮罩
mask = QRegion(path.toFillPolygon().toPolygon())
# 设置遮罩
self.setMask(mask)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # 抗锯齿
painter.setPen(Qt.NoPen)
painter.setBrush(Qt.red)
painter.drawEllipse(0, 0, self.width(), self.height())
if __name__ == '__main__':
app = QApplication([])
widget = CircleWidget()
widget.show()
app.exec_()
```
在这个示例中,我们创建了一个名为CircleWidget的自定义QWidget,它的形状被设置为圆形。我们使用QPainterPath创建了一个圆形路径,然后使用toFillPolygon()函数将其转换为多边形,并使用QRegion创建了一个遮罩。最后,我们使用setMask()函数将遮罩应用于QWidget。
在paintEvent()函数中,我们使用QPainter绘制了一个红色的圆形,使CircleWidget显示为圆形。
注意,我们还隐藏了标题栏并设置了透明背景,这是为了使我们的圆形QWidget看起来更像是一个独立的小部件。
阅读全文