docs: def qteNextWidget(self, numSkip: int=1, ofsWidget: QtGui.QWidget=None,
                        skipVisible: bool=False, skipInvisible: bool=True,
                        skipFocusable: bool=False,
                        skipUnfocusable: bool=True):
          """
          Return the next widget in cyclic order.
  
          If ``ofsWidget`` is **None** then start counting at the
          currently active widget and return the applet ``numSkip``
          items away in cyclic order in the internal widget list. If
          ``numSkip`` is positive traverse the applet list forwards,
          otherwise backwards. The methods supports the following
          selection criteria:
  
          * ``skipVisible``: only invisible widgets are considered.
          * ``skipInvisible``: only visible widgets are considered.
          * ``skipFocusable``: only unfocusable widgets are considered.
          * ``skipUnfocusable``: only unfocusable widgets are considered.
  
          |Args|
  
          * ``numSkip`` (**int**): number of applets to skip.
          * ``ofsWidget`` (**QWidget**): widget from where to start counting.
          * ``skipVisible`` (**bool**): whether or not to skip currently
            shown widgets.
          * ``skipInvisible`` (**bool**): whether or not to skip currently
            not shown widgets.
          * ``skipFocusable`` (**bool**): whether or not to skip focusable
            widgets.
          * ``skipUnfocusable`` (**bool**): whether or not to skip unfocusable
            widgets.
  
          |Returns|
  
          * **QWidget**: either the next widget that fits the criteria, or
            **None** if no such widget exists.
  
          |Raises|
  
          * **QtmacsArgumentError** if at least one argument has an invalid type.
          * **QtmacsOtherError** if ``ofsWidget`` was not added with
            ``qteAddWidget``.
          """
          # Check type of input arguments.
          if not hasattr(ofsWidget, '_qteAdmin') and (ofsWidget is not None):
              msg = '<ofsWidget> was probably not added with <qteAddWidget>'
              msg += ' method because it lacks the <_qteAdmin> attribute.'
              raise QtmacsOtherError(msg)
  
          # Housekeeping: remove non-existing widgets from the admin structure.
          self.qteAutoremoveDeletedWidgets()
  
          # Make a copy of the widget list.
          widList = list(self._qteAdmin.widgetList)
  
          # Return immediately if the widget list is empty. The actual
          # return value is either self._qteActiveWidget (if it points
          # to a child widget of the current applet), or None.
          if not len(widList):
              if qteGetAppletFromWidget(self._qteActiveWidget) is self:
                  return self._qteActiveWidget
              else:
                  return None
  
          if skipInvisible:
              # Remove all invisible widgets.
              widList = [wid for wid in widList if wid.isVisible()]
  
          if skipVisible:
              # Remove all visible widgets.
              widList = [wid for wid in widList if not wid.isVisible()]
  
          if skipFocusable:
              # Remove all visible widgets.
              widList = [wid for wid in widList if not wid._qteAdmin.isFocusable]
  
          if skipUnfocusable:
              # Remove all unfocusable widgets.
              widList = [wid for wid in widList if wid._qteAdmin.isFocusable]
  
          # Return immediately if the list is empty. This is typically
          # the case at startup before any applet has been added.
          if not len(widList):
              return None
  
          # If no offset widget was given then use the currently active one.
          if ofsWidget is None:
              ofsWidget = self._qteActiveWidget
  
          if (ofsWidget is not None) and (numSkip == 0):
              if qteIsQtmacsWidget(ofsWidget):
                  return ofsWidget
  
          # Determine the index of the offset widget; assume it is zero
          # if the widget does not exist, eg. if the currently active
          # applet is not part of the pruned widList list.
          try:
              ofsIdx = widList.index(ofsWidget)
          except ValueError:
              ofsIdx = 0
  
          # Compute the index of the next widget and wrap around the
          # list if necessary.
          ofsIdx = (ofsIdx + numSkip) % len(widList)
  
          # Return the widget.
          return widList[ofsIdx]