title: Why do I need to decorate connected slots with pyqtSlot?
body: <p>I'm using pyqt5, and I have several methods connected using code similar to the following:</p>
  
  <pre><code>self.progress.canceled.connect(self.cancel)
  </code></pre>
  
  <p>Where, for example, <code>self.cancel</code> is:</p>
  
  <pre><code>def cancel(self):
      self.timer.stop()
  </code></pre>
  
  <p>This code seems to work cleanly in multiple scenarios, without ever decorating <code>cancel</code> with <code>pyqtSlot</code> or doing anything special with it.</p>
  
  <p>My questions are:</p>
  
  <ol>
  <li>What am I losing by doing it this way?</li>
  <li>What is the reason <code>pyqtSlot</code> is required?</li>
  </ol>