paintEvent的时机
时间: 2024-06-14 12:04:49 浏览: 68
paintEvent是Qt中的一个事件函数,用于绘制窗口的内容。它在以下几种情况下被调用:
1. 窗口首次显示时,会自动发送重绘事件,触发paintEvent函数的调用。
2. 当窗口需要更新时,例如窗口大小改变、窗口被遮挡后再次显示等,也会发送重绘事件,触发paintEvent函数的调用。
3. 当调用QWidget的update()或repaint()函数时,也会发送重绘事件,触发paintEvent函数的调用。
在paintEvent函数中,你可以使用QPainter对象进行绘制操作,例如绘制图形、文本等。需要注意的是,在paintEvent函数中不要调用update()或repaint()函数,否则会导致无限循环调用paintEvent函数,造成程序崩溃。
以下是一个示例代码,演示了paintEvent函数的使用:
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(Qt.red)
painter.setBrush(Qt.blue)
painter.drawRect(10, 10, 100, 100)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec()
```
在上述代码中,我们创建了一个自定义的QWidget子类MyWidget,并重写了其paintEvent函数。在paintEvent函数中,我们使用QPainter对象绘制了一个蓝色的矩形。
阅读全文