aboutsummaryrefslogtreecommitdiffstats
path: root/examples/opengl/hellogl2/window.py
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-09-12 14:04:03 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2023-09-19 13:20:41 +0200
commitbd180bc53ea3aa86f49070e316f965473102c383 (patch)
tree98b7de9ec1c18d65a6423aaa25e96e0e3895c56f /examples/opengl/hellogl2/window.py
parent200275225befe77d020f5caf6d8eb1a576a79755 (diff)
Examples: Split the hellogl2 example
Some small refactoring: shorten lines, use super() and move shader code to constants. Refactor the transparent option handling to be in line with the C++ example. Call the OpenGL cleanup from hideEvent() instead of QOpenGLContext::aboutToBeDestroyed() since the signal is emitted from the destructor and thus has no effect for Python. Pick-to: 6.6 Task-number: PYSIDE-2460 Task-number: PYSIDE-2206 Change-Id: I5d140db6e04baf88d2ac867d809c6cff9eb740b5 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'examples/opengl/hellogl2/window.py')
-rw-r--r--examples/opengl/hellogl2/window.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/examples/opengl/hellogl2/window.py b/examples/opengl/hellogl2/window.py
new file mode 100644
index 000000000..0d38fc490
--- /dev/null
+++ b/examples/opengl/hellogl2/window.py
@@ -0,0 +1,56 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# Copyright (C) 2013 Riverbank Computing Limited.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt
+from PySide6.QtWidgets import (QHBoxLayout, QSlider, QWidget)
+
+from glwidget import GLWidget
+
+
+class Window(QWidget):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._gl_widget = GLWidget()
+
+ self._x_slider = self.create_slider()
+ self._x_slider.valueChanged.connect(self._gl_widget.set_xrotation)
+ self._gl_widget.x_rotation_changed.connect(self._x_slider.setValue)
+
+ self._y_slider = self.create_slider()
+ self._y_slider.valueChanged.connect(self._gl_widget.set_yrotation)
+ self._gl_widget.y_rotation_changed.connect(self._y_slider.setValue)
+
+ self._z_slider = self.create_slider()
+ self._z_slider.valueChanged.connect(self._gl_widget.set_zrotation)
+ self._gl_widget.z_rotation_changed.connect(self._z_slider.setValue)
+
+ main_layout = QHBoxLayout()
+ main_layout.addWidget(self._gl_widget)
+ main_layout.addWidget(self._x_slider)
+ main_layout.addWidget(self._y_slider)
+ main_layout.addWidget(self._z_slider)
+ self.setLayout(main_layout)
+
+ self._x_slider.setValue(15 * 16)
+ self._y_slider.setValue(345 * 16)
+ self._z_slider.setValue(0 * 16)
+
+ self.setWindowTitle(self.tr("Hello GL"))
+
+ def create_slider(self):
+ slider = QSlider(Qt.Vertical)
+
+ slider.setRange(0, 360 * 16)
+ slider.setSingleStep(16)
+ slider.setPageStep(15 * 16)
+ slider.setTickInterval(15 * 16)
+ slider.setTickPosition(QSlider.TicksRight)
+ return slider
+
+ def keyPressEvent(self, event):
+ if event.key() == Qt.Key_Escape:
+ self.close()
+ else:
+ super().keyPressEvent(event)