PySide6.QtGui.QFontMetrics¶
- class QFontMetrics¶
QFontMetrics类提供字体度量信息。更多…概要¶
方法¶
def
__init__()def
ascent()def
boundingRect()def
capHeight()def
descent()def
elidedText()def
fontDpi()def
height()def
inFont()def
inFontUcs4()def
leading()def
leftBearing()def
lineSpacing()def
lineWidth()def
maxWidth()def
minLeftBearing()def
__ne__()def
__eq__()def
overlinePos()def
rightBearing()def
size()def
strikeOutPos()def
swap()def
underlinePos()def
xHeight()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QFontMetrics函数用于计算给定字体的字符和字符串的大小。有三种方法可以创建QFontMetrics对象:使用
QFont调用QFontMetrics构造函数会创建一个与屏幕兼容的字体的字体度量对象,即该字体不能是打印机字体。如果稍后更改字体,字体度量对象不会更新。(注意:如果使用打印机字体,返回的值可能不准确。打印机字体并不总是可访问的,因此如果提供了打印机字体,将使用最接近的屏幕字体。)
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()
另请参阅
为
font构建一个字体度量对象。字体指标将与用于创建
font的绘制设备兼容。字体度量对象保存了在创建时传递给构造函数的字体信息,如果之后字体的属性发生变化,该对象不会更新。
使用
QFontMetrics(constQFont&,QPaintDevice*) 来获取与特定绘图设备兼容的字体度量。- __init__(fm)
- Parameters:
fm –
QFontMetrics
构造
fm的副本。- __init__(font, pd)
- Parameters:
字体 –
QFontpd –
QPaintDevice
为
font和paintdevice构建一个字体度量对象。字体度量将与传递的paintdevice兼容。如果
paintdevice是None,则度量将与屏幕兼容,即在使用字体在小部件或pixmaps上绘制文本时获得的度量,而不是在QPicture或QPrinter上。字体度量对象保存了在创建时传递给构造函数的字体信息,如果之后字体的属性发生变化,该对象不会更新。
- ascent()¶
- Return type:
整数
返回字体的上升高度。
字体的上升是从基线到字符延伸到的最高位置的距离。实际上,一些字体设计师会打破这一规则,例如当他们在一个字符上放置多个重音符号,或者为了适应某个特定字符时,因此这个值可能会太小(尽管这种情况很少见)。
另请参阅
- averageCharWidth()¶
- Return type:
整数
返回字体中字形(glyphs)的平均宽度。
返回由
text指定的字符串中字符的边界矩形。该边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与
horizontalAdvance()方法返回的值不同。如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用
horizontalAdvance()代替。换行符被当作普通字符处理,不作为换行符。
边界矩形的高度至少与
height()返回的值一样大。- boundingRect(text, textOption)
- Parameters:
文本 – str
textOption –
QTextOption
- Return type:
返回由
text指定的字符串字符的边界矩形,该字符串使用option进行布局。边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与
horizontalAdvance()方法返回的值不同。如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用
horizontalAdvance()代替。换行符被当作普通字符处理,不作为换行符。
边界矩形的高度至少与
height()返回的值一样大。- boundingRect(r, flags, text[, tabstops=0[, tabarray=None]])
这是一个重载函数。
返回由
text指定的字符串中字符的边界矩形,这是如果文本在(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::Horizontal 对齐方式默认为 Qt::AlignLeft,垂直对齐方式默认为 Qt::AlignTop。
如果设置了多个水平或垂直对齐标志,则结果对齐方式未定义。
如果在
flags中设置了Qt::TextExpandTabs,那么:如果tabArray不为空,它指定了一个以0结尾的像素位置序列用于制表符;否则如果tabStops不为零,它将被用作制表符间距(以像素为单位)。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且文本输出可能会覆盖边界矩形中的所有像素。
换行符被处理为换行。
尽管实际字符高度不同,“Yes”和“yes”的边界矩形高度相同。
此函数返回的边界矩形比由更简单的
boundingRect()函数计算的矩形稍大。此函数使用maximum left和right字体轴承,这对于多行文本正确对齐是必要的。此外,使用fontHeight()和lineSpacing()来计算高度,而不是单个字符的高度。另请参阅
horizontalAdvance()boundingRect()Alignment- boundingRect(x, y, w, h, flags, text[, tabstops=0[, tabarray=None]])
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
flags – int
文本 – str
tabstops – int
tabarray – int
- Return type:
这是一个重载函数。
返回给定
text在由x和y坐标、width和height指定的矩形内的边界矩形。如果在
flags中设置了Qt::TextExpandTabs并且tabArray不为空,它指定了一个以0结尾的像素位置序列用于制表符;否则,如果tabStops不为零,它将被用作制表符间距(以像素为单位)。- capHeight()¶
- Return type:
整数
返回字体的帽高。
字体的帽高是指大写字母在基线以上的高度。具体来说,它是指那些平坦的大写字母的高度——比如H或I——与圆形字母如O或尖形字母如A相对,后两者可能会显示超出部分。
另请参阅
- descent()¶
- Return type:
整数
返回字体的下降部分。
下降是从基线到字符延伸到的最低点的距离。实际上,一些字体设计师会打破这一规则,例如为了适应某个特定字符,因此这个值可能会太小(尽管这种情况很少见)。
另请参阅
- elidedText(text, mode, width[, flags=0])¶
- Parameters:
文本 – str
mode –
TextElideModewidth – int
flags – int
- Return type:
字符串
如果字符串
text的宽度超过width,则返回字符串的省略版本(即包含“…”的字符串)。否则,返回原始字符串。mode参数指定文本是在左侧(例如,“…tech”)、中间(例如,“Tr…ch”)还是右侧(例如,“Trol…”)进行省略。width是以像素为单位指定的,而不是字符。flags参数是可选的,目前仅支持 Qt::TextShowMnemonic 作为值。省略标记遵循布局方向。例如,如果
mode是Qt::ElideLeft,则在从右到左的布局中,它将位于文本的右侧;如果mode是Qt::ElideRight,则它将位于文本的左侧。- fontDpi()¶
- Return type:
浮点数
返回字体DPI。
- height()¶
- Return type:
整数
返回字体的高度。
另请参阅
- horizontalAdvance(text, textOption)¶
- Parameters:
文本 – str
textOption –
QTextOption
- Return type:
整数
返回使用
option布局的text的水平前进像素数。前进距离是在绘制
text之后绘制后续字符的适当距离。另请参阅
- horizontalAdvance(text[, len=-1])
- Parameters:
文本 – str
len – int
- Return type:
整数
返回
text的前len个字符的水平前进像素数。如果len为负数(默认值),则使用整个字符串。即使len明显较短,也会分析text的整个长度。这是绘制
text后下一个字符的适当距离。另请参阅
- horizontalAdvanceChar(arg__1)¶
- Parameters:
arg__1 –
QChar- Return type:
整数
- inFont(ch)¶
- Parameters:
ch –
QChar- Return type:
布尔
如果字符
ch是字体中的有效字符,则返回true;否则返回false。- inFontUcs4(ucs4)¶
- Parameters:
ucs4 – 整数
- Return type:
布尔
如果以UCS-4/UTF-32编码的字符
ucs4是字体中的有效字符,则返回true;否则返回false。- leading()¶
- Return type:
整数
返回字体的行距。
这是自然的行间距。
另请参阅
- leftBearing(ch)¶
- Parameters:
ch –
QChar- Return type:
整数
返回字体中字符
ch的左间距。左轴承是字符最左侧像素与字符逻辑原点之间的向右距离。如果字符的像素延伸到逻辑原点的左侧,则该值为负。
请参见
horizontalAdvance()以获取此指标的图形描述。- lineSpacing()¶
- Return type:
整数
返回从一个基线到下一个基线的距离。
这个值总是等于
leading()+height()。- lineWidth()¶
- Return type:
整数
返回下划线和删除线的宽度,根据字体的点大小进行调整。
- maxWidth()¶
- Return type:
整数
返回字体中最宽字符的宽度。
- minLeftBearing()¶
- Return type:
整数
返回字体的最小左间距。
这是字体中所有字符的最小
leftBearing(字符)。请注意,如果字体很大,这个函数可能会非常慢。
- minRightBearing()¶
- Return type:
整数
返回字体的最小右侧间距。
这是字体中所有字符的最小
rightBearing(字符)。请注意,如果字体很大,这个函数可能会非常慢。
- __ne__(other)¶
- Parameters:
其他 –
QFontMetrics- Return type:
布尔
如果
other不等于此对象,则返回true;否则返回false。如果两个字体度量是从相同的
QFont构建的,并且它们构建的绘制设备被认为是兼容的,则认为这两个字体度量是相等的。另请参阅
operator==()- __eq__(other)¶
- Parameters:
其他 –
QFontMetrics- Return type:
布尔
如果
other等于此对象,则返回true;否则返回false。如果两个字体度量是从相同的
QFont构建的,并且它们构建的绘制设备被认为是兼容的,则认为这两个字体度量是相等的。另请参阅
operator!=()- overlinePos()¶
- Return type:
整数
返回从基线到应绘制上划线的距离。
- rightBearing(ch)¶
- Parameters:
ch –
QChar- Return type:
整数
返回字体中字符
ch的右侧间距。右侧间距是字符最右侧像素到后续字符逻辑原点的向左距离。如果字符的像素延伸到字符的
horizontalAdvance()右侧,则该值为负。请参见
horizontalAdvance()以获取此指标的图形描述。- size(flags, str[, tabstops=0[, tabarray=None]])¶
- Parameters:
flags – int
str – str
tabstops – int
tabarray – int
- Return type:
返回
text的像素大小。flags参数是以下标志的按位或:Qt::TextSingleLine 忽略换行符。
Qt::TextExpandTabs 扩展制表符(见下文)
Qt::TextShowMnemonic 将“&x”解释为 x;即,带下划线。
Qt::TextWordWrap 将文本换行以适应矩形。
如果在
flags中设置了Qt::TextExpandTabs,那么:如果tabArray不为空,它指定了一个以0结尾的像素位置序列用于制表符;否则如果tabStops不为零,它将被用作制表符间距(以像素为单位)。换行符被处理为换行。
尽管实际字符高度不同,“Yes”和“yes”的边界矩形高度相同。
另请参阅
- strikeOutPos()¶
- Return type:
整数
返回从基线到应绘制删除线的距离。
- swap(other)¶
- Parameters:
其他 –
QFontMetrics
将此字体度量实例与
other交换。此函数非常快且永远不会失败。返回由
text指定的字符串中字符的紧密边界矩形。该边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与
horizontalAdvance()方法返回的值不同。如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用
horizontalAdvance()代替。换行符被当作普通字符处理,不作为换行符。
- tightBoundingRect(text, textOption)
- Parameters:
文本 – str
textOption –
QTextOption
- Return type:
返回一个紧密包围由
text指定的字符串中的字符的边界矩形,该字符串使用option进行布局。边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与
horizontalAdvance()方法返回的值不同。如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用
horizontalAdvance()代替。换行符被当作普通字符处理,不作为换行符。
- underlinePos()¶
- Return type:
整数
返回从基线到应绘制下划线的位置的距离。
- xHeight()¶
- Return type:
整数
返回字体的‘x’高度。这通常但不总是与字符‘x’的高度相同。