def qteNextApplet(self, numSkip: int=1, ofsApp: (QtmacsApplet, str)=None,
                      skipInvisible: bool=True, skipVisible: bool=False,
                      skipMiniApplet: bool=True,
                      windowObj: QtmacsWindow=None):
        if isinstance(ofsApp, str):
            ofsApp = self.qteGetAppletHandle(ofsApp)
        if len(self._qteAppletList) == 0:
            return None
        if skipVisible and skipInvisible:
            return None
        appList = list(self._qteAppletList)
        if skipInvisible:
            appList = [app for app in appList if app.qteIsVisible()]
            if windowObj is not None:
                appList = [app for app in appList
                           if app.qteParentWindow() == windowObj]
        if skipVisible:
            appList = [app for app in appList if not app.qteIsVisible()]
        if skipMiniApplet:
            if self._qteMiniApplet in appList:
                appList.remove(self._qteMiniApplet)
        if len(appList) == 0:
            return None
        if ofsApp is None:
            ofsApp = self._qteActiveApplet
        if ofsApp in self._qteAppletList:
            if ofsApp in appList:
                ofsIdx = appList.index(ofsApp)
            else:
                ofsIdx = self._qteAppletList.index(ofsApp)
                glob_list = self._qteAppletList[ofsIdx:]
                glob_list += self._qteAppletList[:ofsIdx]
                ofsIdx = [appList.index(_) for _ in glob_list if _ in appList]
                if len(ofsIdx) == 0:
                    msg = ('No match between global and local applet list'
                           ' --> Bug.')
                    self.qteLogger.error(msg, stack_info=True)
                    return None
                else:
                    ofsIdx = ofsIdx[0]
        else:
            ofsIdx = 0
        ofsIdx = (ofsIdx + numSkip) % len(appList)
        return appList[ofsIdx]