In my one year of Qt programming, I have learnt a lot about signals and slots. But not enough...
http://doc.qt.io/qt-5/signalsandslots.html
S
Another use case where you possibly don't want all methods to be slots is when you are exposing objects to JavaScript through Qt's WebKit Bridge: all public slots are invocable from the JavaScript and that might open up security issues, depending on whether the JavaScript can be trusted or not.
So if you want a public method which is not invocable from JavaScript, you may not declare it as a slot.