diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-09-12 14:04:03 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-09-19 13:20:41 +0200 |
| commit | bd180bc53ea3aa86f49070e316f965473102c383 (patch) | |
| tree | 98b7de9ec1c18d65a6423aaa25e96e0e3895c56f /examples/opengl/hellogl2/window.py | |
| parent | 200275225befe77d020f5caf6d8eb1a576a79755 (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.py | 56 |
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) |
