1 简述
Text 文本元素可以显示普通文本,也能渲染富文本。支持很多属性,是其他组件显示文本的基础。 常用字体属性:字体名、像素大小、点大小、字宽、字重、粗体、下划线、斜体等 常用文本属性:自动大小、自动换行、显示不全显示省略号等
2 示例
2.1 文本显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/e649f8d536d4481686c6c5953529a032.png)
Text {
font.family: "微软雅黑"
text:"打开"
}
3 属性
属性类型描述advancesizeantialiasingbool抗锯齿开关,默认开启baseUrlurlbottomPaddingrealclipbool文本裁剪,默认情况Text随字符串长度自动调整宽度;当clip为true,超过Text元素width将不会显示;若clip为false,text则会超出Text区域显示colorcolor文本颜色contentHeightrealcontentWidthrealeffectiveHorizontalAlignmentenumerationelideenumeration显示设置宽度时,省略过长字符,支持省略号显示在字符串的左、中、右三个位置font.boldbool粗体font.capitalizationenumeration设置英文大小写,支持默认、全大写、全小写、分词首字母大写font.familystring字体名称font.hintingPreferenceenumerationfont.italicbool斜体font.kerningboolfont.letterSpacingreal字符间距font.pixelSizeint字体像素大小font.pointSizereal字号大小,与设备无关font.preferShapingboolfont.strikeoutbool删除线font.styleNamestringfont.underlinebool下划线font.weightint字重font.wordSpacingreal单词间距fontInfo.boldboolfontInfo.familystringfontInfo.italicboolfontInfo.pixelSizestringfontInfo.pointSizerealfontInfo.styleNamestringfontInfo.weightintfontSizeModeenumeration字体大小模式Text.FixedSize(默认)- 使用font.pixelSize或font.pointSize指定的大小。Text.HorizontalFit - 根据width调整最大字号。Text.VerticalFit - 根据height使用最大字号。Text.Fit - 根据宽高调整最大字号需要使用minimumPointSize或minimumPixelSize指定最小边界,font.pointSize 或 font.pixelSize属性指定的最大边界horizontalAlignmentenumeration水平对齐方式hoveredLinkstring悬浮链接leftPaddingreallineCountint行数,富文本不支持lineHeightreallineHeightModeenumerationlinkColorcolormaximumLineCountintminimumPixelSizeintminimumPointSizeintpaddingrealrenderTypeenumeration默认Qt渲染,可选Native渲染,可能出现锯齿renderTypeQualityint渲染质量 ,大号字体需关注rightPaddingrealstyleenumeration文本样式styleColorcolortextstring文本内容textFormatenumerationtopPaddingrealtruncatedboolverticalAlignmentenumeration垂直对齐方式wrapModeenumeration设置此属性以将文本换行为文本项的宽度。仅当设置了显式宽度时,文本才会换行。包装模式可以是以下之一:Text.NoWrap(默认)- 不会执行换行。如果文本包含的换行符不足,则contentWidth将超过设置的宽度。Text.WordWrap - 仅在单词边界上进行换行。如果单词太长,contentWidth将超过设置的宽度。Text.WrapAnywhere - 换行是在一行上的任何一点完成的,即使它发生在单词的中间。Text.Wrap - 如果可能,在单词边界处进行换行;否则,它将出现在行上的适当位置,甚至在单词的中间。
4 中级示例
4.1 超大号字体平滑显示
左右两个Text元素显示83,字体微软雅黑,左边默认属性,右边是设置了字体渲染属性后的效果,可以看到默认属性的Text相当粗糙,Qt5.14没找到可改善此问题的方法,在Qt6.2中查到相关属性。 我们看下属性描述,来自官方6.2的文档
属性:renderTypeQuality : int
覆盖此组件的默认呈现类型质量。这是一种低级自定义,在大多数情况下可以忽略。它目前仅在renderType为Text.QtRendering 时才具有效果。
Text.QtRendering使用的栅格化算法可能会生成大文本大小的伪影,例如尖角看起来比它们应该的更圆。如果这是特定文本项的问题,请增加该值以提高呈现质量,但会消耗内存。renderTypeQuality
可以是超过 0 的任何整数,也可以是以下预定义值之一renderTypeQuality
Text.DefaultRenderTypeQuality (default) = -1 Text.LowRenderTypeQuality = 26 Text.NormalRenderTypeQuality = 52 Text.HighRenderTypeQuality = 104 Text.VeryHighRenderTypeQuality = 208
在qt6.2中亲测,这个属性初始化为整数500或以上枚举,无问题。但动态更新此属性会导致程序崩溃
import QtQuick
import QtQuick.Controls 2.0
Item{
Row{
anchors.centerIn: parent
Text {
id:textA
font.family: "微软雅黑"
text:"83"
color: "green"
}
Text {
id:textB
font.family: "微软雅黑"
text:"83"
color: "green"
antialiasing: true //是否使用抗锯齿功能 默认开启
renderType: Text.QtRendering //渲染类型 默认Qt
renderTypeQuality: Text.VeryHighRenderTypeQuality
}
}
Slider{
anchors.bottom: parent.bottom
anchors.bottomMargin: 20
width: parent.width
height: 10
from: 6
to:1600
value:0
onValueChanged: {
textA.font.pixelSize = value
textB.font.pixelSize = value
}
}
}
|