Как отменить наследование GraphicsEffect от родителя к потомку в PyQt5?

Решения найденные в сети не помогают. Воспроизводимый пример ниже. Нужно, чтобы дочерний эллипс не отбрасывал тень, а родительский так же оставался с тенью.

from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsEllipseItem, QGraphicsDropShadowEffect
from PyQt5.QtGui import QColor, QRadialGradient, QPainter
from PyQt5.QtCore import Qt

class Scene(QGraphicsScene):
    def __init__(self):
        super(Scene, self).__init__()
        self.setBackgroundBrush(QColor(230, 240, 220))

        # Создание эллипсов
        ellipse_parent = QGraphicsEllipseItem(0, 0, 300, 200)
        ellipse_child = QGraphicsEllipseItem(50, 20, 80, 60)

        # Наложение тени на родительский элемент
        shadow_effect = QGraphicsDropShadowEffect()
        shadow_effect.setBlurRadius(5)
        shadow_effect.setOffset(5, 5)
        ellipse_parent.setGraphicsEffect(shadow_effect)

        # Установка дочернего элемента
        ellipse_child.setParentItem(ellipse_parent)

        # Отмена эффекта тени на дочернем элементе
        child_shadow_effect = QGraphicsDropShadowEffect()
        child_shadow_effect.setEnabled(False)  # Отключение эффекта
        ellipse_child.setGraphicsEffect(child_shadow_effect)

        # Добавление элементов на сцену
        self.addItem(ellipse_parent)

class View(QGraphicsView):
    def __init__(self, scene):
        super(View, self).__init__(scene)
        self.setRenderHints(QPainter.Antialiasing)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

if __name__ == "__main__":
    app = QApplication([])

    scene = Scene()
    view = View(scene)
    view.show()

    app.exec_()

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Павел

Никак! В документации сказано, что эффект будет наложен на все дочерние элементы.

→ Ссылка