【问题标题】:QTextEdit Decrease Indentation of "tab" KeyQTextEdit减少“tab”键的缩进
【发布时间】:2016-12-12 22:58:24
【问题描述】:

我正在尝试使用 Qt 制作一个小的 C++ 文本编辑器。当我在编辑器中按下键盘上的"tab" 键时,它会使行缩进很多。我希望代码缩进大约 3 个空格,而不是看起来是 11 个空格。有什么办法可以改变tab键的功能吗?谢谢。

【问题讨论】:

  • 如果无法直接配置 TAB 行为,则覆盖 keyPressEvent 并根据需要捕获和处理 TAB。
  • 需要澄清:你想保持TAB键插入TAB字符(ASCII码9),只是改变标签宽度?或者你想改变它以便TAB键插入空格?

标签: qt qtextedit


【解决方案1】:

要更改制表符(ASCII 字符 9)的宽度,您可以使用QTextEditQPlainTextEdit 都存在的tabStopWidth 属性(doc link)。它需要制表符宽度以像素为单位。请注意,制表符没有一个固定的宽度,而是向前移动到下一个 TAB 停止,这是由该属性确定的像素间隔,从左边缘开始。

如果您希望 TAB 宽度取决于字体,您可以使用 QFontMetrics 类来获取某些字体和字符的像素宽度。示例代码:

    // this object is QTextEdit or QPlainTextEdit or a subclass
    int fontWidth = QFontMetrics(this->currentCharFormat().font()).averageCharWidth();
    this->setTabStopWidth( 3 * fontWidth );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2018-06-03
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    相关资源
    最近更新 更多