As I have not much experience with this and the information seems kinda voodoo I was looking up the ALL PySide2 examples for instances of @QtCore.Slot decorators.
First ones I found were all QtQuick and QML based and indeed: There is the type specified and these ones actually break when the decorator is not correct 👍 (the declarative/extending/chapter3-bindings/bindings.py one has a Slot as well but actually the decorator is not needed there. The whole function is not used/needed in this example)
Now any other occurrences: All these work without the @QtCore.Slot decorator:
* external/matplotlib/widget_3dplot.py
* external/opencv/webcam_pattern_detection.py - (super funny example! :D)
* external/scikit/staining_colors_separation.py
* installer_test/hello.py
* opengl/grabber.py - mentions Slots in function args but does not use a decorator, works
* opengl/hellogl.py - uses ancient self.connect(.. SLOT("setValue(int)"))-style but works with modern slider.valueChanged.connect(setterSlot) right away
* sql/books/bookwindow.py
* tutorial/t7.py - t14.py
* widgets/codeeditor/codeeditor.py
* widgets/state-machine/trafficlight.py
* widgets/systray/main.py
* widgets/threads/thread_signals.py
This is the only other example where it needs to be set:
* webchannel/standalone
- core.py: _emit_send_text does NOT need the Slot decorator but receiveText indeed DOES!
- display.py - works without
- websocketclientwrapper.py - works without
So I'd conclude: whenever a method is directly connected within the python code there is no need for the Slot decorator.
Whenever a connection is implied and handled outside of python a Slot decorator is needed.