Return the key sequence as a human readable string, eg. "<ctrl>+x".

        Note that this list is suitable as an argument to
        QtmacsKeysequence, which would create another object
        representing the same key sequence. If a key could not be
        converted then it will be displayed as '<Unknown>'. If this
        happens, then the key map in ``qte_global.default_qt_keymap``
        is incomplete and should be amended accordingly.

        |Args|

        * **None**

        |Returns|

        **str**: the key sequence, eg. '<ctrl>+f', or '<F1>', or
          '<Unknown>'.

        |Raises|

        * **None**

def toString(self):
        """
        Return the key sequence as a human readable string, eg. "<ctrl>+x".

        Note that this list is suitable as an argument to
        QtmacsKeysequence, which would create another object
        representing the same key sequence. If a key could not be
        converted then it will be displayed as '<Unknown>'. If this
        happens, then the key map in ``qte_global.default_qt_keymap``
        is incomplete and should be amended accordingly.

        |Args|

        * **None**

        |Returns|

        **str**: the key sequence, eg. '<ctrl>+f', or '<F1>', or
          '<Unknown>'.

        |Raises|

        * **None**
        """
        # Initialise the final output string.
        retVal = ''

        for mod, key in self.keylistQtConstants:
            out = ''
            # Check for any modifiers except <shift> and add the
            # corresponding string.
            if (mod & QtCore.Qt.ControlModifier):
                out += '<Ctrl>+'
            if (mod & QtCore.Qt.AltModifier):
                out += '<Alt>+'
            if (mod & QtCore.Qt.MetaModifier):
                out += '<Meta>+'
            if (mod & QtCore.Qt.KeypadModifier):
                out += '<Keypad>+'
            if (mod & QtCore.Qt.GroupSwitchModifier):
                out += '<GroupSwitch>+'

            # Format the string representation depending on whether or
            # not <Shift> is active.
            if (mod & QtCore.Qt.ShiftModifier):
                # If the key with the shift modifier exists in the
                # reverse dictionary then use that string, otherwise
                # construct it manually be printing the modifier and
                # the key name. The first case is typically
                # encountered for upper case characters, where eg. 'F'
                # is preferable over '<Shift>+f'.
                if (QtCore.Qt.ShiftModifier, key) in self.keyDictReverse:
                    # The shift-combined key exists in the dictionary,
                    # so use it.
                    out += self.keyDictReverse[(QtCore.Qt.ShiftModifier, key)]
                elif (QtCore.Qt.NoModifier, key) in self.keyDictReverse:
                    # The shift-combined key does not exists in the
                    # dictionary, so assemble the modifier and key by
                    # hand.
                    out += ('<Shift>+' +
                            self.keyDictReverse[(QtCore.Qt.NoModifier, key)])
                else:
                    out += '<Unknown>'
            else:
                if (QtCore.Qt.NoModifier, key) in self.keyDictReverse:
                    out += self.keyDictReverse[(QtCore.Qt.NoModifier, key)]
                else:
                    out += '<Unknown>'

            # Add a spacer.
            retVal += out + ' '

        # Return the final string (minus the last spacer).
        return retVal[:-1]