aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/effects/blurpicker/blureffect.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/effects/blurpicker/blureffect.py')
-rw-r--r--examples/widgets/effects/blurpicker/blureffect.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/widgets/effects/blurpicker/blureffect.py b/examples/widgets/effects/blurpicker/blureffect.py
new file mode 100644
index 000000000..16c14a758
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/blureffect.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QRect
+from PySide6.QtGui import QPainter
+from PySide6.QtWidgets import QGraphicsBlurEffect
+
+
+class BlurEffect(QGraphicsBlurEffect):
+ def __init__(self, item):
+ super().__init__()
+ self._base_line = 200
+ self._item = item
+
+ def adjust_for_item(self):
+ y = self._base_line - self._item.pos().y()
+
+ # radius = qBound(qreal(0.0), y / 32, qreal(16.0)); which is equivalent to
+ radius = max(0, min(y / 32, 16))
+
+ self.setBlurRadius(radius)
+
+ def set_base_line(self, base_line):
+ self._base_line = base_line
+
+ def boundingRect(self) -> QRect:
+ self.adjust_for_item()
+ return super().boundingRect()
+
+ def draw(self, painter: QPainter):
+ self.adjust_for_item()
+ super().draw(painter)