我正在使用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
复制相似问题