docs: def qteDisconnectHook(self, hookName: str,
                            slot: (types.FunctionType, types.MethodType)):
          """
          Disconnect ``slot`` from ``hookName``.
  
          If ``hookName`` does not exist, or ``slot`` is not connected
          to ``hookName`` then return **False**, otherwise disassociate
          ``slot`` with ``hookName`` and return **True**.
  
          |Args|
  
          * ``hookName`` (**str**): name of the hook.
          * ``slot`` (**function**, **method**): the routine to
            execute when the hook triggers.
  
          |Returns|
  
          * **bool**: **True** if ``slot`` was disconnected from ``hookName``,
            and **False** in all other cases.
  
          |Raises|
  
          * **QtmacsArgumentError** if at least one argument has an invalid type.
          """
          # Shorthand.
          reg = self._qteRegistryHooks
  
          # Return immediately if no hook with that name exists.
          if hookName not in reg:
              msg = 'There is no hook called <b>{}</b>.'
              self.qteLogger.info(msg.format(hookName))
              return False
  
          # Return immediately if the ``slot`` is not connected to the hook.
          if slot not in reg[hookName]:
              msg = 'Slot <b>{}</b> is not connected to hook <b>{}</b>.'
              self.qteLogger.info(msg.format(str(slot)[1:-1], hookName))
              return False
  
          # Remove ``slot`` from the list.
          reg[hookName].remove(slot)
  
          # If the list is now empty, then remove it altogether.
          if len(reg[hookName]) == 0:
              reg.pop(hookName)
          return True