【问题标题】:Get the text margins of a QLineEdit获取 QLineEdit 的文本边距
【发布时间】:2014-05-30 22:04:49
【问题描述】:

如何获取 QLineEdit 的文本边距?

注意截图中的红线,这是我感兴趣的边距:

我尝试使用屏幕截图中的编辑框qDebug() << ui->lineEdit->textMargins();,但它打印了QMargins(0, 0, 0, 0),即使编辑框确实有边距。

【问题讨论】:

  • 最终这是字体大小和小部件大小之间的空间?您可能可以通过字体大小(QFontMetrics)和可用高度来计算。 textMargins() 方法返回为边距保留的可用空间,边距为 0 并不意味着您的字体总是会碰到边框。
  • 这可以解释垂直边距,但不能解释水平边距。另外,水平的可以消失,见i.stack.imgur.com/9mD13.png
  • 为什么需要这些信息?也许有其他方法可以在不获取此值的情况下解决您的问题。
  • @MarekR 我需要计算给定字符的绝对边界框。为什么我需要那个?说来话长。

标签: c++ qt qlineedit


【解决方案1】:

检查paint event of QLineEdit。正如你所看到的,很多东西都会对它产生影响。

除了textMargins,还有一些东西会影响你正在寻找的价值。

  1. 使用的样式(见第 1942 行)
  2. 和字体属性 - 见QFontMetrics::ascentQFontMetrics::descent

样式值是最重要的,你必须想办法得到这个值(可能需要子类)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多