首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当显示标记时,在QTextEdit中设置选项卡宽度?

当显示标记时,在QTextEdit中设置选项卡宽度?
EN

Stack Overflow用户
提问于 2022-05-31 08:51:50
回答 1查看 84关注 0票数 1

我正在使用QTextEdit制作一个标记编辑器/查看器,在测试它时,我注意到当我创建一个列表时,它会自动添加一个缩进到项目(图片在这里)的开头。然后,当我添加子列表时,它增加了一些大的空白,我只能把它看作是一个整体的选项卡宽度。

我试过:

  1. 阅读文档,但他们似乎没有讨论这个
  2. 恢复QTextEdit编辑器中的文本,它看起来很好,没有项目开头的缩进,这让我认为这是setMarkdown方法中的一个相关问题。QTextEdit编辑器中的文本:
代码语言:javascript
运行
复制
    - bullet 1
       - sub bullet 1
    - bullet 2
       - sub bullet 2
  1. 我忘了提到这一点,我已经读过关于如何更改QPlainTextEdit中制表符的宽度的文章,它建议我应该使用setTabStopDistance()。您可以在我用来重现下面的问题的代码中看到,我已经尝试过了,但是它只在QTextEdit编辑器中起作用,而不是在标记查看器中工作。我提供了使用前后setTabStopDistance()

问题:

  1. 是什么导致子弹开始时的凹痕?
  2. 它有可能消除子弹开始时的凹痕吗?
  3. 是否有可能使子弹的间隙变小?

代码我用来复制问题:

代码语言:javascript
运行
复制
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_())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 17:34:21

列表缩进设置在文本编辑的document()上,并且可以用setIndentWidth()进行更改。

代码语言:javascript
运行
复制
class SidebarTextEdit(QTextEdit):
    def __init__(self):
        super().__init__()
        indent = QFontMetricsF(self.font()).horizontalAdvance('    ')
        self.document().setIndentWidth(indent)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72444801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档