- class QFontMetricsF#
QFontMetricsF
类提供字体度量信息。 更多…概要#
方法#
def
__init__()
def
ascent()
def
boundingRect()
def
capHeight()
def
descent()
def
elidedText()
def
fontDpi()
def
height()
def
inFont()
定义
inFontUcs4()
定义
leading()
定义
lineWidth()
定义
maxWidth()
定义
__ne__()
定义
__eq__()
定义
size()
定义
swap()
定义
xHeight()
注意
本文档可能包含自动从 C++ 转换为 Python 的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式通知我们
详细信息#
警告
本节包含自动从 C++ 转换为 Python 的片段,可能包含错误。
QFontMetricsF
函数计算给定字体的字符和字符串大小。您可以使用现有的QFont
构造一个QFontMetricsF
对象以获取该字体的度量信息。如果稍后更改了字体,字体度量对象不会更新。创建后,该对象提供了访问字体、字符及其以字体渲染的字符串的单独度量的函数。
有以下一些操作字体的函数:
ascent()
、descent()
、height()
、leading()
和lineSpacing()
返回字体的大小属性。函数underlinePos()
、overlinePos()
、strikeOutPos()
和lineWidth()
返回字符下划线、上划线或删除线的大小属性。这些函数都是快速执行的。还有一些操作字体中 MainForm 字体的函数,如:
minLeftBearing()
、minRightBearing()
和maxWidth()
。这些函数执行速度较慢,建议尽可能避免使用。对于每个字符,您都可以获取它的
horizontalAdvance()
、leftBearing()
和rightBearing()
,并使用inFont()
查找它是否在字体中。您还可以将其视为字符串,并使用字符串函数对其操作。字符串函数包括
horizontalAdvance()
,用于返回字符串的像素宽度(或打印机中的点,为打印机),示例
font = QFont("times", 24) fm = QFontMetricsF(font) pixelsWide = fm.horizontalAdvance("What's the advance width of self text?") pixelsHigh = fm.height()
另请参阅
- __init__(font, pd)#
- 参数 :
font –
QFont
pd –
QPaintDevice
为
font
和paintdevice
构建字体度量对象。字体度量将与传递给 paintdevice 的字体兼容。如果
paintdevice
为None
,则度量将是屏幕兼容的,即您在控件或字体度量对象在创建时存储在构造函数中传递的字体信息,并且在之后字体属性更改时不会更新。
- __init__(font)
- 参数 :
font –
QFont
为
font
构建字体度量对象。字体度量将与创建
font
时使用的 paintdevice 兼容。字体度量对象在创建时存储在构造函数中传递的字体信息,并且在之后字体属性更改时不会更新。
使用
QFontMetricsF
(constQFont
- __init__(arg__1)
- 参数 :
arg__1 –
QFontMetricsF
构建
fm
的副本。- __init__(arg__1)
- 参数 :
arg__1 –
QFontMetrics
从给定的
fontMetrics
对象构造具有浮点精度字体度量对象。- ascent()#
- 返回类型:
float
返回字体的上升。
字体的上升是从基线到最高位置的字符延伸的距离。在实际应用中,有些字体设计师会打破这条规则,例如他们在字符上方放置多个重音符号,或者为了适应某个字符,所以这个值可能太小(尽管很少见)。
另请参阅
- averageCharWidth()#
- 返回类型:
float
返回字体中符号的平均宽度。
- boundingRect(r, flags, string, tabstops=0, tabarray=None)#
这是一个重载函数。
返回给定
text
中字符的边界矩形。这是文本绘制的像素集,当被限制到rect
指定的边界矩形时。如果rect
是一个对None
对象的引用,例如在通过一个默认构造的 QRectF 传递时,边界矩形将不会约束自身的大小。flags
参数是以下标志的位数或:Qt::AlignLeft 与左边界对齐,对于阿拉伯语和希伯来语除外,它是对右边界对齐。
Qt::AlignRight 与右边界对齐,对于阿拉伯语和希伯来语除外,它是对左边界对齐。
Qt::AlignJustify 产生对齐的文本。
Qt::AlignHCenter 水平居中。
Qt::AlignTop 与顶部边界对齐。
Qt::AlignBottom 与底部边界对齐。
Qt::AlignVCenter 垂直居中
Qt::AlignCenter (==
Qt::AlignHCenter | Qt::AlignVCenter
)Qt::TextSingleLine 忽略文本中的换行符。
Qt::TextExpandTabs 扩展制表符(见下文)
Qt::TextShowMnemonic 将“&x”解释为 x,即下划线。
Qt::TextWordWrap 将文本分成适合矩形的行。
Qt::Horizontal 对齐默认为 Qt::AlignLeft,垂直对齐默认为 Qt::AlignTop。
如果设置了多个水平或垂直对齐标志,则结果对齐是未定义的。
这些标志在 Qt::AlignmentFlag 中定义。
如果
flags
中设置了 Qt::TextExpandTabs,则使用以下行为来解释文本中的制表符如果
tabArray
非空,则它指定了一段 0 终止的像素位置序列,用于文本中的制表符。如果
tabStops
非零,则用作制表符间距(像素为单位)。
请注意,边界矩形可能延伸到 (0, 0) 的左侧,例如对于斜体字体。
换行符按行断处理。
尽管实际的字符高度不同,“Yes” 和 “yes” 的边界矩形高度相同。
此函数返回的边界矩形比简单的
boundingRect()
函数计算得到的略大。此函数使用maximum left
和right
字体偏移量,以确保多行文本正确对齐。此外,fontHeight() 和lineSpacing()
用于计算高度,而不是单个字符的高度。另请参阅
horizontalAdvance()
boundingRect()
Alignment
- boundingRect(string)
- 参数 :
string – str
- 返回类型:
返回由
text
指定的字符串中字符的边界矩形。边界矩形始终至少覆盖文本在 (0, 0) 位置绘制时将覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回矩形的宽度可能与
horizontalAdvance()
方法返回的值不同。如果您想了解字符串的进展宽度(用于排列一系列字符串),请改用
horizontalAdvance()
。换行符被作为普通字符处理,而不是 行断。
边界矩形的高度至少与
height()
返回的值一样大。- boundingRect(text, textOption)
- 参数 :
text – str
textOption –
QTextOption
- 返回类型:
返回使用
option
布局指定的字符串text
的字符边界矩形。边界矩形始终覆盖至少文本如果在 (0, 0) 位置绘制时覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回矩形的宽度可能与
horizontalAdvance()
方法返回的值不同。如果您想了解字符串的进展宽度(用于排列一系列字符串),请改用
horizontalAdvance()
。换行符被作为普通字符处理,而不是 行断。
边界矩形的高度至少与
height()
返回的值一样大。- capHeight()#
- 返回类型:
float
返回字体的基准高度。
字体的基准高度是基准线上方大写字母的高度。它具体指平直的大写字母的高度,如 H 或 I,与圆形字母如 O 或尖形字母如 A 相比,后两者可能会显示溢出。
另请参阅
- descent()#
- 返回类型:
float
返回字体的下降高度。
下降高度是指从基线到底部延伸的字符的距离。请注意,这与 X 不同,后者加1像素。在实践中,一些字体设计师会打破这条规则,例如为了适应某些字符,因此这个值可能太小,尽管这种情况很少见。
另请参阅
- elidedText(text, mode, width[, flags=0])#
- 参数 :
text – str
mode –
TextElideMode
width – float
flags – int
- 返回类型:
str
如果字符串
text
的宽度大于width
,则返回省略版本的字符串(即在字符串中包含“…”)。否则,返回原始字符串。mode
参数指定文本是向左(例如,“…tech”)中间(例如,“Tr…ch”)还是向右(例如,“Trol…”)省略。width
以像素为单位指定,而不是字符。flags
参数是可选的,目前仅支持 Qt::TextShowMnemonic 作为值。省略标记遵循布局方向。例如,如果
mode
是Qt::ElideLeft
,则对于从右向左的布局,它将位于文本的右侧,如果mode
是Qt::ElideRight
,则位于文本的左侧。- fontDpi()#
- 返回类型:
float
返回字体DPI。
- height()#
- 返回类型:
float
返回字体的高度。
另请参阅
- horizontalAdvance(string, textOption)#
- 参数 :
string – str
textOption –
QTextOption
- 返回类型:
float
返回使用
option
布局后text
的水平推进像素值。推进距离是绘制后续字符后的距离。
另请参阅
- horizontalAdvance(string[, length=-1])
- 参数 :
string – str
length – int
- 返回类型:
float
返回
text
的前length
个字符的水平推进像素值。如果length
为负(默认值),则使用整个字符串。即使length
短得多,也会分析text
的整个长度。推进距离是绘制后续字符后的距离。
另请参阅
- horizontalAdvanceChar(arg__1)#
- 参数 :
arg__1 –
QChar
- 返回类型:
float
- inFont(arg__1)#
- 参数 :
arg__1 –
QChar
- 返回类型:
bool
如果字符
ch
是字体中的有效字符,则返回true
;否则返回false
。- inFontUcs4(ucs4)#
- 参数 :
ucs4 – int
- 返回类型:
bool
如果由
ch
给定的字符,以 UCS-4/UTF-32 编码,是字体中的有效字符,则返回true
;否则返回false
。- leading()#
- 返回类型:
float
返回字体的大间距。
这是自然行间距。
另请参阅
- leftBearing(arg__1)#
- 参数 :
arg__1 –
QChar
- 返回类型:
float
返回字体中字符
ch
的左边界。左边界是字符最左侧像素点相对于字符逻辑起点的向右距离。如果字符的像素延伸到逻辑起点左侧,则此值是负数。
有关此度量指标的可视描述,请参阅
horizontalAdvance()
。- lineSpacing()#
- 返回类型:
float
返回从一行基线到下一行基线的距离。
- lineWidth()#
- 返回类型:
float
返回下划线和删除线的宽度,适合字体的磅值。
- maxWidth()#
- 返回类型:
float
返回字体中最宽字符的宽度。
- minLeftBearing()#
- 返回类型:
float
返回字体的最小左边界。
这是字体中所有字符的
leftBearing
(字符) 的最小值。请注意,如果字体较大,此函数可能会非常缓慢。
- minRightBearing()#
- 返回类型:
float
返回字体最小右侧基线值。
这是字体中所有字符最小右侧基线(char)。
请注意,如果字体较大,此函数可能会非常缓慢。
- __ne__(other)#
- 参数 :
other –
QFontMetricsF
- 返回类型:
bool
这是一个重载函数。
如果字体度量与
other
字体度量不相等,则返回true
;否则返回false
。另请参阅
operator==()
- __eq__(other)#
- 参数 :
other –
QFontMetricsF
- 返回类型:
bool
如果字体度量与
other
字体度量相等,则返回true
;否则返回false
。如果两个字体度量是从相同的
QFont
构造而来,且它们所绘制的图像设备被认为是兼容的,则认为这两个字体度量相等。- overlinePos()#
- 返回类型:
float
返回基线到绘制上划线位置的距离。
- rightBearing(arg__1)#
- 参数 :
arg__1 –
QChar
- 返回类型:
float
返回字体中字符
ch
的右侧基线值。右侧偏移定义为字符最右像素与后续字符逻辑起点的左侧距离。如果字符像素超出字符的
horizontalAdvance()
,此值将为负。有关此度量指标的可视描述,请参阅
horizontalAdvance()
。- size(flags, str[, tabstops=0[, tabarray=None]])#
- 参数 :
flags – int
str – 字符串
tabstops – int
tabarray – int
- 返回类型:
返回给定字符串中字符的像素大小。
flags
参数是以下标志的位数或:Qt::TextSingleLine 会忽略换行字符。
Qt::TextExpandTabs 扩展制表符(见下文)
Qt::TextShowMnemonic 将“&x”解释为 x,即下划线。
Qt::TextWordWrap 将文本分成适合矩形的行。
这些标志在 Qt::TextFlag 枚举中定义。
如果
flags
中设置了 Qt::TextExpandTabs,则使用以下行为来解释文本中的制表符如果
tabArray
非空,则它指定了一段 0 终止的像素位置序列,用于文本中的制表符。如果
tabStops
非零,则用作制表符间距(像素为单位)。
换行符按行断处理。
注意:尽管实际字符高度不同,但 "Yes" 和 "yes" 的包围矩形高度相同。
另请参阅
- strikeOutPos()#
- 返回类型:
float
返回基线到绘制删除线的距离。
- swap(other)#
- 参数 :
other –
QFontMetricsF
与
other
交换此字体度量实例。此函数非常快速,永不失败。返回围绕
text
字符串中字符的紧凑包围矩形。包围矩形始终覆盖至少文本绘制在 (0, 0) 时的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回矩形的宽度可能与
horizontalAdvance()
方法返回的值不同。如果您想了解字符串的进展宽度(用于排列一系列字符串),请改用
horizontalAdvance()
。换行符被作为普通字符处理,而不是 行断。
- tightBoundingRect(text, textOption)
- 参数 :
text – str
textOption –
QTextOption
- 返回类型:
返回使用
option
布局的字符串中指定字符的紧致边界矩形。边界矩形始终涵盖至少在(0,0)处绘制的文本所覆盖的像素集合。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回矩形的宽度可能与
horizontalAdvance()
方法返回的值不同。如果您想了解字符串的进展宽度(用于排列一系列字符串),请改用
horizontalAdvance()
。换行符被作为普通字符处理,而不是 行断。
- underlinePos()#
- 返回类型:
float
返回基线到下划线应该绘制的地方的距离。
- xHeight()#
- 返回类型:
float
返回字体的 x 高度。这通常与字符 'x' 的高度相同,但不一定是。