Python pyQt4事件(如resizeEvent)不会滴入QGraphicsView中的QGLWidget呈现程序

Python pyQt4事件(如resizeEvent)不会滴入QGraphicsView中的QGLWidget呈现程序,python,pyqt4,qgraphicsview,qgraphicsscene,qglwidget,Python,Pyqt4,Qgraphicsview,Qgraphicsscene,Qglwidget,我正在尝试使用QGraphicsView/qgraphicscene类和一个QGLWidget来完成大部分渲染(稍后我需要硬件加速)。 我的QGraphicsView平铺在QGridLayout中,它本身位于QDockWidget派生窗口中。我似乎无法让事件逐渐进入QGLWidget。我不认为这是布局架构,因为当我将QGLWidget派生对象直接放入QGridLayout“tiles”中时,事件会传递给OpenGL类。QGraphicsView->QGLWidget通信不起作用 QDocWidg

我正在尝试使用QGraphicsView/qgraphicscene类和一个QGLWidget来完成大部分渲染(稍后我需要硬件加速)。 我的QGraphicsView平铺在QGridLayout中,它本身位于QDockWidget派生窗口中。我似乎无法让事件逐渐进入QGLWidget。我不认为这是布局架构,因为当我将QGLWidget派生对象直接放入QGridLayout“tiles”中时,事件会传递给OpenGL类。QGraphicsView->QGLWidget通信不起作用

QDocWidget中启动它们的代码片段:

...
self.lightBoxes = []
for row in range ( numRows ):
    for col in range ( numCols ):
        #view = myImageView()        this wont see the GL renderer, why ?
        view = myGLView()
        self.gridLayout.addWidget (view, row, col )
        self.lightBoxes.append ( view )
这里有QGLWidget和QGraphicsView派生类。同样,事件将到达任一对象,但不在它们之间(QGraphicsView和QGLWidget)

我的调用顺序一定很混乱,我没有看到任何事件(这里是resizeEvent)进入pyOpenGL类。我认为我遵循了文档中的示例代码。你知道我怎样才能让它工作吗


thx

可能您需要与myGLView的父级(即self)一起调用myGLView

事件被传播

class myGLView ( QtOpenGL.QGLWidget):
    def __init__(self, parent=None, GLFlags=0 ):
        print "MyGLView.__init__"
        QtOpenGL.QGLWidget.__init__( self, parent )


    def initializeGL(self):       
        print "myGLView.initializeGL"
        # ...

    def resizeGL (self, width=0, height=0):
        print "myGLView.resizeGL"

        glViewport(0, 0, width, height)
        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()
        gluPerspective(40.0, 1.0, 1.0, 30.0)
    #...

    def paintGL (self):
        print "myGLView.paintGL"
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
    # ....



#   ...resize Events wont trickle down from here...
class myImageView( QtGui.QGraphicsView ):    

def __init__(self, parent=None, origPixmap=None ):
    print "myImageView.__init__"
    QtGui.QGraphicsView.__init__( self, parent )
    QtCore.QMetaObject.connectSlotsByName(self)        

    self.GLRenderer = myGLView( self )        
    self.graphicsScene = QtGui.QGraphicsScene()        
    self.setViewport ( self.GLRenderer )
    self.setScene ( self.graphicsScene )        

def resizeEvent(self, event):
    print "myImageView.resizeEvent"        
    QtGui.QGraphicsView.resizeEvent( self, event )
view = myGLView(self)