【发布时间】:2018-09-29 22:12:01
【问题描述】:
我正在尝试在小部件上绘制一个形状,据我了解,您可以通过覆盖 paintEvent() 方法来做到这一点。但是,当我这样做时,形状会在后面呈现。如何渲染前面的形状?
我正在使用 pyqt5,我的测试代码是:
from PyQt5 import Qt
from PyQt5.QtGui import QPainter, QPen,QBrush,QColor
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout,QPushButton
import sys
class MyWidget(QWidget):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.btn = QPushButton('Hello World')
self.layout = QHBoxLayout()
self.layout.addWidget(self.btn)
self.setLayout(self.layout)
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(QPen(Qt.green))
brush = QBrush(QColor(0,0,255,255))
painter.setBrush(brush)
painter.drawRect(0,0,50,50)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainscreen = MyWidget()
mainscreen.show()
app.exec_()
【问题讨论】:
-
对不起,“在前面”是什么意思?您可以添加显示所需结果的样机图片吗?
-
@S.Monteleone 感谢您的回复,我已经上传了示例图片
-
谢谢,现在很清楚了。您想在所有小部件的顶部绘制红色方块。那么@BenjaminT 的答案是正确的