2011-05-07 41 views
1

如何创建一个窗口小部件或窗口将只是一个透明的图像? 我的意思是像在这个方案:sakura script player
我的尝试是:从图像Qt窗口小部件形状

label = QtGui.QLabel(None, 
        QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) 
label.setPixmap(QtGui.QPixmap('c:\transparent.png')) 
label.setScaledContents(True) 

label.show() 

但只产生一个长方形的窗口,尽管图像的透明度

+0

忘了提及,即时通讯使用PyQt4 | Python3.2 | Windows7,但试图得到一些'跨平台'的代码 – chapaev 2011-05-07 11:15:28

+0

行,解决了它!下面是示例(plane.png内容alpha通道): pixmap = QtGui.QPixmap('c:\ plane.png') label.setPixmap(pixmap) label.setMask(pixmap.mask()) shitty格式化系统 – chapaev 2011-05-07 12:14:18

回答

2

你会使用的QWidget::setMask()和一个组合的从QPixmap S创建QBitmap口罩的功能:

曾经有在Qt的分布的xpenguin般的例子,但他们有一个整形的时钟取代它(如果你的Qt 3.3左右,退房examples/tux/tux.cpp)。