일종의 육아 문제처럼 들립니다. 이 예상대로 작동합니다
import sys
from PySide.QtGui import *
from PySide.QtOpenGL import *
from OpenGL.GL import *
from OpenGL.GLU import *
class GLWidget(QGLWidget):
def __init__(self, *args, **kwargs):
QGLWidget.__init__(self, *args, **kwargs)
def initializeGL(self):
glShadeModel(GL_SMOOTH)
glEnable(GL_DEPTH_TEST)
glClearColor(0.0, 0.0, 0.0, 1.0)
glClearDepth(1.0)
def resizeGL(self, w, h):
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glViewport(0, 0, w, h)
gluPerspective(45.0, w/h, 1, 1000)
def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glTranslatef(0.0, 0.0, -6.0)
glBegin(GL_TRIANGLES)
glColor3f(1.0, 0.0, 0.0)
glVertex3f(0.0, 1.0, 0.0)
glColor3f(0.0, 0.0, 1.0)
glVertex3f(-1.0, -1.0, 0.0)
glColor3f(0.0, 1.0, 0.0)
glVertex3f(1.0, -1.0, 1.0)
glEnd()
class Window(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.scroll = QScrollArea(self)
self.glWidget = GLWidget(self.scroll)
self.glWidget.resize(600, 400)
self.scroll.setWidget(self.glWidget)
self.layout = QHBoxLayout()
self.layout.addWidget(self.scroll)
self.setLayout(self.layout)
self.resize(400, 300)
self.show()
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())
- OS : 윈도우 7 SP1 (32 비트)
- PySide : 1.2.1
- Qt는 : 4.8.5
- PyOpenGL : 3.0.2
그래서'QScrollArea' 안에'QGLWidget'이 있습니까? 스크롤 할 때 정확히 어떤 일이 일어날 것으로 예상합니까? – Fenikso
QGLWidget이 모든 도면과 함께 이동 될 것으로 예상됩니다. QGLWidget을 창 크기를 조정하여 이동할 수 있습니다. ScrollView 정렬은 가운데로 설정되고 QGLWidget은 창 중앙에 유지됩니다. 하지만 QGLWidget을 스크롤하여 이동할 수는 없지만 모든 GL 드로잉은 현재 보이는 QGLWidget의 왼쪽 하단 모퉁이에 스냅됩니다. – Vavius