我正在使用QTextEdit制作一个标记编辑器/查看器,在测试它时,我注意到当我创建一个列表时,它会自动添加一个缩进到项目(图片在这里)的开头。然后,当我添加子列表时,它增加了一些大的空白,我只能把它看作是一个整体的选项卡宽度。
我试过:
QTextEdit编辑器中的文本,它看起来很好,没有项目开头的缩进,这让我认为这是setMarkdown方法中的一个相关问题。QTextEdit编辑器中的文本:    - bullet 1
       - sub bullet 1
    - bullet 2
       - sub bullet 2setTabStopDistance()。您可以在我用来重现下面的问题的代码中看到,我已经尝试过了,但是它只在QTextEdit编辑器中起作用,而不是在标记查看器中工作。我提供了使用前后的setTabStopDistance()问题:
代码我用来复制问题:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class SidebarTextEdit(QTextEdit):
    def __init__(self):
        super().__init__()
        self.setTabStopDistance(QFontMetricsF(self.font()).horizontalAdvance(' ') * 4)
class SidebarWindow(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        # -- main layout -- #
        self.main_layout = QVBoxLayout()
        self.setLayout(self.main_layout)
        # -- text edit -- #
        self.markdown_editor = SidebarTextEdit()
        self.markdown_editor.textChanged.connect(self.reload_markdown)
        self.markdown_viewer = SidebarTextEdit()
        self.markdown_viewer.setReadOnly(True)
        self.main_layout.addWidget(self.markdown_editor)
        self.main_layout.addWidget(self.markdown_viewer)
    def reload_markdown(self):
        markdown_text = self.markdown_editor.toPlainText()
        # print(markdown_text)
        self.markdown_viewer.setMarkdown(markdown_text)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = SidebarWindow()
    w.show()
    sys.exit(app.exec_())发布于 2022-06-01 17:34:21
列表缩进设置在文本编辑的document()上,并且可以用setIndentWidth()进行更改。
class SidebarTextEdit(QTextEdit):
    def __init__(self):
        super().__init__()
        indent = QFontMetricsF(self.font()).horizontalAdvance('    ')
        self.document().setIndentWidth(indent)https://stackoverflow.com/questions/72444801
复制相似问题