pyQT5绘制圆角矩形边框
时间: 2024-09-26 16:03:18 浏览: 35
在PyQt5中,要绘制带圆角的矩形边框,你可以使用`QPainter`和`QStyleOptionFrame`以及`drawRoundedRect()`函数。首先,你需要创建一个`QStyleOptionFrame`实例,然后设置相关的样式选项,最后通过`QWidget`的`paintEvent()`方法来绘制。
以下是一个简单的例子:
```python
from PyQt5.QtWidgets import QWidget, QPainter, QStyleOptionFrame, QApplication
from PyQt5.QtGui import QPainterPath, QRectF
class RoundedRectWidget(QWidget):
def __init__(self, radius=10, *args, **kwargs):
super().__init__(*args, **kwargs)
self.radius = radius
self.initUI()
def initUI(self):
self.setMouseTracking(True) # 监听鼠标移动事件
def paintEvent(self, event):
opt = QStyleOptionFrame()
opt.initFrom(self)
painter = QPainter(self)
painter.fillRect(event.rect(), Qt.lightGray) # 先填充背景颜色
painter.setPen(Qt.black) # 设置画笔颜色
path = QPainterPath(QRectF(0, 0, self.width(), self.height()))
path.addRoundedRect(event.rect(), self.radius, self.radius)
painter.drawPath(path) # 绘制圆角矩形
def mouseMoveEvent(self, event):
self.update() # 当鼠标移动时更新绘图区域
if __name__ == "__main__":
app = QApplication([])
widget = RoundedRectWidget()
widget.show()
app.exec_()
```
在这个例子中,`radius`参数控制圆角的大小。当你在窗口内移动鼠标时,你会看到随着鼠标位置的变化,圆角矩形边框会跟随移动。
阅读全文