- 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 –
QFontpd –
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”的高度相同,但不总是相同。