当我试图在PySide
中渲染一个完全透明的小部件时,我遇到了一个奇怪的角落案例。完全透明的面具 - >完全不透明的部件
如果我打电话setMask
与QBitmap
填充Qt.color0
,它使小部件完全不透明(而不是完全透明,如我所料)。
放入Qt.color
的单个像素会导致预期的行为:小部件变得完全透明,而不是单个像素。
下面是一个简单的例子。将变量single_pixel
更改为True
会填充左上角的像素,从而导致遮罩按预期开始工作。
任何想法这里发生了什么?
import sys
from PySide import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(200, 200)
widget.show()
bitmap = QtGui.QBitmap(widget.size())
bitmap.clear()
single_pixel = False
if single_pixel:
painter = QtGui.QPainter()
painter.begin(bitmap)
painter.setPen(QtCore.Qt.color1)
painter.drawPoint(0,0)
painter.end()
widget.setMask(bitmap)
sys.exit(app.exec_())