當我試圖在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_())