Итак, я хотел сделать функцию масштабирования в PyQT.И из ответа 8.040 я реализовал это так:
class GLWindow(QOpenGLWidget):
def __init__(self, parent=None):
super(GLWindow, self).__init__(parent)
self.object = 0
self.zoomFactor = 1.0
self.setFocusPolicy(Qt.WheelFocus)
self.lastPos = QPoint()
и
def resizeGL(self, width, height):
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity()
gl.glOrtho(-2 * self.zoomFactor, +2 * self.zoomFactor, +2 * self.zoomFactor, -2 * self.zoomFactor, 4.0, 15.0)
gl.glMatrixMode(gl.GL_MODELVIEW)
Теперь в начале программы, если я изменю self.zoomFactor
наскажем, 2.0, он имеет желаемый эффект увеличения, но я не могу изменить его размер во время работы.
def wheelEvent(self, event):
"""http://doc.qt.io/qt-5/qwheelevent.html"""
scroll = event.angleDelta()
if scroll.y() > 0: # up
self.zoomFactor += 0.1
self.resizeGL(self.width(), self.height())
self.update()
pass
else: # down
pass
Приведенный выше код - это то, как я уже пробовал, без желаемого эффекта.Он улавливает увеличение и вызывает функцию resizeGL
, но не увеличивает и не увеличивает.