gpt4 book ai didi

qt - QGLWidget 不会在滚动时移动其内容

转载 作者:行者123 更新时间:2023-12-03 18:18:24 26 4
gpt4 key购买 nike

我正在使用带有 PySide 绑定(bind)的 python 中的 Qt。我的应用程序的主要部分是可以调整到特定值的 OpenGL View (这是一个模拟器,用于在移动设备的不同分辨率下测试我的游戏)。我使用 QGLWidget 从我的游戏引擎渲染图形,并使用 QScrollArea 进行滚动。

当我尝试滚动 GL View 时,什么也没有发生 - 它只是停留在同一个地方,但是 QGLWidget 的坐标更新得很好,我通过打印语句看到了这一点。

在调整主窗口大小的过程中,我得出结论,QGLWidget 中的所有内容都被捕捉到当前可见区域的左下角。所以这可以解释为什么我看不到滚动。

我应该手动更新投影矩阵吗?

最佳答案

这听起来像是某种育儿问题。这按预期工作:

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_())
  • 操作系统:Windows 7 SP1(32 位)
  • PySide: 1.2.1
  • 数量:4.8.5
  • PyOpenGL:3.0.2
  • 关于qt - QGLWidget 不会在滚动时移动其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981240/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com