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 클래스. 설명서의 예제 코드를 따랐다 고 생각했습니다. 내가 어떻게 일할 수 있을지 아는가?
들으