PyQt: прозрачный фон QGLWidget
Я надеюсь сделать QGLWidget, который имеет прозрачный фон, как рисунке выше.
Это код cpp, и я не понимаю некоторые его части. Насколько я знаю, он использует дескриптор окна, контекст рисования и т. Д. Но я бедна C и C++. Я использовал Python и PyQt, поэтому для меня это похоже на Атлантиду. Есть ли какая-нибудь идея для QGLWidget, которая имеет прозрачный фон?
ADD
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QApplication, QColor
from PyQt4.QtOpenGL import QGLWidget
from OpenGL import GL
import sys
class TransGLWidget(QGLWidget):
def __init__(self, parent=None):
QGLWidget.__init__(self, parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.setGeometry(200, 100, 640, 480)
def initializeGL(self):
self.qglClearColor(QColor(0, 0, 0, 0))
def resizeGL(self, w, h):
GL.glViewport(0, 0, w, h)
GL.glMatrixMode(GL.GL_PROJECTION)
GL.glLoadIdentity()
x = float(w)/h
GL.glFrustum(-x, x, -1.0, 1.0, 1.0, 10.0)
GL.glMatrixMode(GL.GL_MODELVIEW)
GL.glLoadIdentity()
def paintGL(self):
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
GL.glBegin(GL.GL_TRIANGLES)
GL.glColor3f(1.0, 0.0, 0.0)
GL.glVertex3f(-1.0, 1.0, -3.0)
GL.glColor3f(0.0, 1.0, 0.0)
GL.glVertex3f(1.0, 1.0, -3.0)
GL.glColor3f(0.0, 0.0, 1.0)
GL.glVertex3f(0.0, -1.0, -3.0)
GL.glEnd()
app = QApplication(sys.argv)
widget = TransGLWidget()
widget.show()
app.exec_()
Стараюсь с кодом выше, но он не показывает мне ничего. (Кажется, весь прозрачный виджет.) Если я избавлюсь от «setAttribute», «setWindowFlags», появится треугольник. Есть ли недостаток в коде?
Возможный дубликат [Qt Widget с прозрачным фоном] (http://stackoverflow.com/questions/7667552/qt-widget-with-transparent-background) –