如何将制表符长度与Qt中的多个空格相匹配

How to match tab length to a number of spaces in Qt

本文关键字:空格 Qt 制表符      更新时间:2023-10-16

我在使QTextEdit中的选项卡与某些空格的大小相同时遇到问题,例如4。

我在Mac上使用Qt 4.8.1,并且尝试了几种不同的等宽字体。在每种情况下,我都尝试使用fontMetrics.width()和fontMetrics.boundingRect().width()。传入 ' ' 并乘以 4 并传入 " " 返回我一致的大小,但是当我设置制表位宽度时,它略有偏差。更糟糕的是,错误会累积。如果我键入 6 个制表符,下面是 6 * 4 个空格,则光标最终会出现在一个截然不同的地方。

即使手动调整数字,我也无法找到完全匹配并保持制表符和等效空格一致的整数像素数。

还有其他人遇到过这个问题吗?您是否找到了除用空格替换制表符以外的解决方案?

你试过用这个吗?

QFontMetrics::tightBoundingRect("    ")

我在这里找到了这个建议,但不幸的是它没有提到它是否成功:http://lists.qt.nokia.com/pipermail/qt-interest/2009-June/007924.html

请让我知道它是否适合您:)

我和你有同样的问题,我在QPlainTextEdit构造函数中调用setTabStopWidth(4 * fontMetrics().width(' '));。但是当我在它的构造函数之后调用它时,它可以工作!我不知道它背后的魔力...