2014-12-22 1 views
0

QGraphicsView/QGraphicsScene 클래스를 대량 렌더링을 수행하는 QGLWidget과 함께 사용하려고합니다. (나중에 도로 가속화가 필요합니다). 내 QGraphicsView는 QDrawWayget 파생 창 내부에 QGridLayout에 바둑판 식으로 배열되어 있습니다. 나는 이벤트를 QGLWidget으로 잡아 먹는 것처럼 보이지 않는다. QGLWidget 파생 객체를 QGridLayout '타일'에 직접 배치하면 이벤트가 OpenGL 클래스에 전달되므로 레이아웃 구조는 생각하지 않습니다. QGraphicsView -> QGLWidget 통신이 작동하지 않습니다.pyQt4 resizeEvent와 같은 이벤트가 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) 사이

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) 

내 호출 순서, 나는 그것을 만드는 이벤트 (여기 resizeEvent)가 표시되지 않습니다 터져해야합니다 pyOpenGL 클래스. 설명서의 예제 코드를 따랐다 고 생각했습니다. 내가 어떻게 일할 수 있을지 아는가?

들으

답변

0

은 아마 당신은 (즉, 자기) 이벤트가 전파됩니다

view = myGLView(self) 

부모와 myGLView를 호출해야합니다.

관련 문제