- class QFontMetrics#
《QFontMetrics》类提供字体度量信息。 更多…
概要#
方法#
def
__init__()
def
ascent()
def
boundingRect()
def
capHeight()
def
descent()
def
elidedText()
def
fontDpi()
def
height()
def
inFont()
def
inFontUcs4()
定义
leading()
定义
lineWidth()
定义
maxWidth()
定义
__ne__()
定义
__eq__()
定义
size()
定义
swap()
定义
xHeight()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式让我们知道
详细描述#
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QFontMetrics
函数计算给定字体的字符和字符串的大小。您可以通过三种方式创建一个QFontMetrics
对象使用一个
QFontMetrics
构造器和一个QFont
对象来创建一个屏幕兼容字体字体度量对象,即该字体不能是打印字体。如果之后更改了字体,字体度量对象将 不 被更新。(备注:如果您使用打印字体,返回的值可能不准确。打印字体可能不总是可用的,因此如果没有提供打印字体,则使用最近的屏幕字体。)
QWidget::fontMetrics() 返回一个窗口部件字体的字体度量。这等于
QFontMetrics
(widget->font())。如果之后更改了窗口部件的字体,字体度量对象将 不 被更新。fontMetrics()
返回画家当前字体的字体度量。如果之后更改了画家的字体,字体度量对象将 不 被更新。
一旦创建,该对象就提供了访问字体、它的字符以及在该字体中绘制的字符串的各个度量值的函数。
有一些函数是对字体本身进行操作的:
ascent()
、descent()
、height()
、leading()
和lineSpacing()
返回字体的大小属性。而underlinePos()
、overlinePos()
、strikeOutPos()
和lineWidth()
函数返回下划线、上划线或删除线字符的属性。这些函数都是快速的。还有一些函数是对字体中吉祥物集合进行操作的:
minLeftBearing()
、minRightBearing()
和maxWidth()
。由于它们的必要性,它们总是慢的,我们建议尽可能避免使用它们。对于每个字符,您可以通过以下方式获取其信息:使用
horizontalAdvance()
获取水平前进距离,使用leftBearing()
获取左边界,以及使用rightBearing()
获取右边界,还可以使用inFont()
函数检查该字符是否在字体中使用。您也可以将字符视为字符串,并对其进行字符串操作。字符串函数包括
horizontalAdvance()
,用于返回字符串在像素(或打印机上的点数)中的前进宽度,boundingRect()
,用于返回可容纳渲染字符串的足够大的矩形,以及size()
,用于返回该矩形的尺寸。注意
前进宽度可能与实际渲染文本的宽度不同。它指的是字符串原点到您将附加额外字符的位置的距离。由于文本可能具有溢出(例如斜体字体的情况)或字符之间的填充,前进宽度可能大于或小于实际渲染的文本。这被称为文本的右边界。
示例
font = QFont("times", 24) fm = QFontMetrics(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
为None
,则测量将是屏幕兼容的,即使用此字体在窗口小部件或pixmaps
上绘制文本时获得的度量,而不是在QPicture
或 QPrinter 上。该字体测量对象在其被创建时保持传递给构造函数的字体信息,并且不会更新字体属性更改后的信息。
- __init__(arg__1)
- 参数:
arg__1 –
QFont
为
font
构造一个字体度量对象。字体度量将与创建
font
所使用的绘图设备兼容。该字体测量对象在其被创建时保持传递给构造函数的字体信息,并且不会更新字体属性更改后的信息。
使用
QFontMetrics
(constQFont
&,QPaintDevice
*)来获取与特定绘图设备兼容的字体度量。- __init__(arg__1)
- 参数:
arg__1 –
QFontMetrics
构造对象
fm
的副本。- ascent()#
- 返回类型::
int
返回字体的升序。
字体的升序是指基线到字符向上延伸的最高位置的距离。在实践中,一些字体设计者会打破这一规则,例如在字符上方放置多个连字符,或者为了适应某些字符,所以这个值可能太小(尽管很少见)。
另请参阅
- averageCharWidth()#
- 返回类型::
int
返回字体中符号的平均宽度。
- boundingRect(r, flags, text[, tabstops=0[, tabarray=None]])#
这是一个重载函数。
返回指定字符串中字符的边界矩形,即文本绘制在(0, 0)处时将覆盖的像素集。绘制以及因此的边界矩形受限于矩形
rect
。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::AlignLeft,垂直对齐为 Qt::AlignTop。
如果设置了多个水平或多个垂直对齐标志,则结果对齐是未定义的。
如果设置了
flags
中的 Qt::TextExpandTabs,则:如果tabArray
非空,它指定一个以0结尾的像素位置序列,用于制表符;否则如果tabStops
非零,它用作制表符间距(以像素为单位)。请注意,边界矩形可以延伸到(0,0)的左侧,例如对于斜体字体,并且文本输出可以覆盖边界矩形中的所有像素。
换行符被视为行断。
尽管实际字符高度不同,但 “Yes” 和 “yes” 的边界框高度是相同的。
此函数返回的边界矩形略大于简单的
boundingRect()
函数计算的边界矩形。此函数使用maximum left
和right
字体外侧作为多行文本正确对齐所必需的。此外,fontHeight() 和lineSpacing()
用于计算高度,而不是单个字符的高度。另请参阅
horizontalAdvance()
boundingRect()
Alignment
- boundingRect(text)
- 参数:
text – 字符串
- 返回类型::
返回指定字符串中文本的边界矩形。边界矩形始终覆盖至少文本在(0,0)处绘制时会覆盖的像素集。
请注意,边界矩形可以延伸到(0,0)的左侧,例如对于斜体字体,并且返回的矩形宽度可能与
horizontalAdvance()
方法返回的宽度不同。如果您想了解字符串的进阶宽度(用于将字符串并排排列),请使用
horizontalAdvance()
而不是。换行符被视为普通字符,不是行断。
包围盒的高度至少和由
height()
返回的值一样。- boundingRect(text, textOption)
- 参数:
text – 字符串
textOption -
QTextOption
- 返回类型::
返回使用
option
排版指定的text
字符串的字符的包围矩形。包围矩形始终覆盖至少在(0, 0)位置绘制的文本将覆盖的像素集。请注意,边界矩形可以延伸到(0,0)的左侧,例如对于斜体字体,并且返回的矩形宽度可能与
horizontalAdvance()
方法返回的宽度不同。如果您想了解字符串的进阶宽度(用于将字符串并排排列),请使用
horizontalAdvance()
而不是。换行符被视为普通字符,不是行断。
包围盒的高度至少和由
height()
返回的值一样。- boundingRect(x, y, w, h, flags, text[, tabstops=0[, tabarray=None]])
- 参数:
x - int
y - int
w - int
h - int
flags – int
text – 字符串
tabstops – int
tabarray – int
- 返回类型::
这是一个重载函数。
返回在由x和y坐标、宽度(w)和高度(h)指定的矩形内给定
text
的包围矩形。如果
flags
中设置了Qt::TextExpandTabs,且tabArray
非空,它指定了一个用像素位置标记的0结束的制表符序列;否则,如果tabStops
非零,它被用作制表符间隔(以像素为单位)。- capHeight()#
- 返回类型::
int
返回字体的刻度高度。
字体的刻度高度是基线以上大写字母的高度。具体来说是平头大写字母(如H或I)的高度,而不是圆头字母(如O)或尖头字母(如A)的高度,这两者都可能显示超出。
另请参阅
- descent()#
- 返回类型::
int
返回字体的下降量。
下降是指基准线到降低的点之间字符伸展的距离。在实际中,一些字体设计师会违反这一规则,例如为了适应某个字符,所以这个值过小是可能的(尽管很少见)。
另请参阅
- elidedText(text, mode, width[, flags=0])#
- 参数:
text – 字符串
模式 –
TextElideMode
宽度 – int
flags – int
- 返回类型::
str
如果字符串
text
的宽度大于width
,会返回字符串的省略版本(即在字符串中包含“…”)。否则,返回原始字符串。参数
mode
指定文本是否在左侧省略(例如,“…tech”),在中间省略(例如,“Tr…ch”)或右侧省略(例如,“Trol…”)。参数
width
以像素为单位指定,而不是字符。参数
flags
是可选的,当前只支持Qt::TextShowMnemonic
作为值。省略标记遵循布局方向。例如,如果
mode
是Qt::ElideLeft
,则对于从右到左布局,省略标记将位于文本的右侧,如果mode
是Qt::ElideRight
,则省略标记将位于文本的左侧。- fontDpi()#
- 返回类型::
float
返回字体的DPI。
- height()#
- 返回类型::
int
返回字体的高度。
另请参阅
- horizontalAdvance(arg__1, textOption)#
- 参数:
参数 – str
textOption -
QTextOption
- 返回类型::
int
返回使用
option
布局text
的像素水平延伸。这个延伸是用于在
text
后绘制后续字符的正确距离。另请参阅
- horizontalAdvance(arg__1[, len=-1])
- 参数:
参数 – str
len – int
- 返回类型::
int
返回文本中前
len
个字符的横向像素偏移量。如果len
为负值(默认值),则使用整个字符串。即使len
相对较短,也会分析text
的整个长度。这是在
text
之后绘制字符的适当距离。另请参阅
- horizontalAdvanceChar(arg__1)#
- 参数:
arg__1 -
QChar
- 返回类型::
int
- inFont(arg__1)#
- 参数:
arg__1 -
QChar
- 返回类型::
bool
返回
true
,如果字符ch
是字体中的有效字符;否则返回false
。- inFontUcs4(ucs4)#
- 参数:
ucs4 – int
- 返回类型::
bool
返回
true
,如果用UCS-4/UTF-32编码的字符ucs4
是字体中的有效字符;否则返回false
。- leading()#
- 返回类型::
int
返回字体的leading。
这是自然行间距。
另请参阅
- leftBearing(arg__1)#
- 参数:
arg__1 -
QChar
- 返回类型::
int
返回字体中字符
ch
的左侧偏移。左侧偏移是字符最左侧像素从字符逻辑坐标原点的右向距离。如果字符的像素延伸到逻辑坐标原点的左侧,则此值为负。
见
horizontalAdvance()
的图形描述。- lineSpacing()#
- 返回类型::
int
返回从基线到下一个基线的距离。
- lineWidth()#
- 返回类型::
int
返回下划线和删除线宽度,已调整字体点大小。
- maxWidth()#
- 返回类型::
int
返回字体中最宽字符的宽度。
- minLeftBearing()#
- 返回类型::
int
返回字体中左侧界标的最大值。
这是字体中所有字符最小
leftBearing
(字符) 的值。注意,如果字体较大,此函数可能会非常慢。
- minRightBearing()#
- 返回类型::
int
返回字体中右侧界标的最小值。
这是字体中所有字符最小
rightBearing
(字符) 的值。注意,如果字体较大,此函数可能会非常慢。
- __ne__(other)#
- 参数:
other –
QFontMetrics
- 返回类型::
bool
如果
other
与此对象不相等,则返回true
;否则返回false
。如果两个字体度量是从同一个
QFont
构造的,并且为它们构造的画笔设备被认为是兼容的,则认为这两个字体度量相等。另请参阅
operator==()
- __eq__(other)#
- 参数:
other –
QFontMetrics
- 返回类型::
bool
如果
other
与此对象相等,则返回true
;否则返回false
。如果两个字体度量是从同一个
QFont
构造的,并且为它们构造的画笔设备被认为是兼容的,则认为这两个字体度量相等。另请参阅
operator!=()
- overlinePos()#
- 返回类型::
int
返回基线到应该绘制上划线的地方的距离。
- rightBearing(arg__1)#
- 参数:
arg__1 -
QChar
- 返回类型::
int
返回字体中字符
ch
的右侧边沿。右侧边沿是字符最右侧像素点从后续字符的逻辑原点的左向距离。如果字符的像素延伸到了字符的
horizontalAdvance()
右侧,则此值为负。见
horizontalAdvance()
的图形描述。- size(flags, str[, tabstops=0[, tabarray=None]])#
- 参数:
flags – int
str – 字符串
tabstops – int
tabarray – int
- 返回类型::
返回
text
在像素中的大小。flags
参数是以下标志的位或Qt::TextSingleLine会忽略换行字符。
Qt::TextExpandTabs 扩展制表符(见下文)
Qt::TextShowMnemonic 将 “&x” 解释为 x;即带有下划线。
Qt::TextWordWrap 在矩形内断文本。
如果设置了
flags
中的 Qt::TextExpandTabs,则:如果tabArray
非空,它指定一个以0结尾的像素位置序列,用于制表符;否则如果tabStops
非零,它用作制表符间距(以像素为单位)。换行符被视为行断。
尽管实际字符高度不同,但 “Yes” 和 “yes” 的边界框高度是相同的。
另请参阅
- strikeOutPos()#
- 返回类型::
int
返回基线到应该绘制删除线的地方的距离。
- swap(other)#
- 参数:
other –
QFontMetrics
与此字体度量实例交换
other
。此函数执行非常快且永远不会失败。返回围绕字符串指定字符的紧凑边界矩形。边界矩形始终至少覆盖文本如果绘制在(0, 0)时会覆盖的像素集。
请注意,边界矩形可以延伸到(0,0)的左侧,例如对于斜体字体,并且返回的矩形宽度可能与
horizontalAdvance()
方法返回的宽度不同。如果您想了解字符串的进阶宽度(用于将字符串并排排列),请使用
horizontalAdvance()
而不是。换行符被视为普通字符,不是行断。
- tightBoundingRect(text, textOption)
- 参数:
text – 字符串
textOption -
QTextOption
- 返回类型::
使用
option
布局返回字符串中字符周围紧凑边界矩形。边界矩形始终至少覆盖文本如果绘制在(0, 0)时会覆盖的像素集。请注意,边界矩形可以延伸到(0,0)的左侧,例如对于斜体字体,并且返回的矩形宽度可能与
horizontalAdvance()
方法返回的宽度不同。如果您想了解字符串的进阶宽度(用于将字符串并排排列),请使用
horizontalAdvance()
而不是。换行符被视为普通字符,不是行断。
- underlinePos()#
- 返回类型::
int
返回基线到下划线应该绘制的距离。
- xHeight()#
- 返回类型::
int
返回字体的“x”高度。这通常与字符“x”的高度相同,但不总是相同。