0

我正在尝试将选定的行设置为项目符号并返回,这里我将缩进设置为 0,它会破坏项目符号,但列表属性仍然为 true,因此此代码不会再次将同一行设置回项目符号列表,如何清除底层列表格式,或者最好的方法是什么?

    def bullet_list(self):
    cursor = self.textEdit.textCursor()
    list = cursor.currentList()
    if list:
        listfmt = cursor.currentList().format()
        listfmt.setIndent(0)
        cursor.createList(listfmt)
        self.textEdit.setTextCursor(cursor)
        self.textEdit.setFocus()

    else:
        listFormat = QTextListFormat()
        style = QTextListFormat.Style.ListDisc
        listFormat.setStyle(style)
        cursor.createList(listFormat)
        self.textEdit.setTextCursor(cursor)
        self.textEdit.setFocus()
4

1 回答 1

1

项目必须从列表中删除,您也不应该createList再次使用。

    def bullet_list(self):
        cursor = self.textEdit.textCursor()
        textList = cursor.currentList()
        if textList:
            start = cursor.selectionStart()
            end = cursor.selectionEnd()
            removed = 0
            for i in range(textList.count()):
                item = textList.item(i - removed)
                if (item.position() <= end and
                    item.position() + item.length() > start):
                        textList.remove(item)
                        blockCursor = QTextCursor(item)
                        blockFormat = blockCursor.blockFormat()
                        blockFormat.setIndent(0)
                        blockCursor.mergeBlockFormat(blockFormat)
                        removed += 1
            self.textEdit.setTextCursor(cursor)
            self.textEdit.setFocus()
        else:
            listFormat = QTextListFormat()
            style = QTextListFormat.ListDisc
            listFormat.setStyle(style)
            cursor.createList(listFormat)
            self.textEdit.setTextCursor(cursor)
            self.textEdit.setFocus()

注意:list是 Python 内置的,将其分配给其他任何东西都被认为是不好的做法。

于 2021-11-02T15:48:09.937 回答