QML Text 文字元素

1 简述

Text 文本元素可以显示普通文本,也能渲染富文本。支持很多属性,是其他组件显示文本的基础。
常用字体属性:字体名、像素大小、点大小、字宽、字重、粗体、下划线、斜体等
常用文本属性:自动大小、自动换行、显示不全显示省略号等

2 示例

2.1 文本显示

在这里插入图片描述

Text {
    font.family: "微软雅黑"
    text:"打开"
}

3 属性

属性类型描述
advancesize
antialiasingbool抗锯齿开关,默认开启
baseUrlurl
bottomPaddingreal
clipbool文本裁剪,默认情况Text随字符串长度自动调整宽度;当clip为true,超过Text元素width将不会显示;若clip为false,text则会超出Text区域显示
colorcolor文本颜色
contentHeightreal
contentWidthreal
effectiveHorizontalAlignmentenumeration
elideenumeration显示设置宽度时,省略过长字符,支持省略号显示在字符串的左、中、右三个位置
font.boldbool粗体
font.capitalizationenumeration设置英文大小写,支持默认、全大写、全小写、分词首字母大写
font.familystring字体名称
font.hintingPreferenceenumeration
font.italicbool斜体
font.kerningbool
font.letterSpacingreal字符间距
font.pixelSizeint字体像素大小
font.pointSizereal字号大小,与设备无关
font.preferShapingbool
font.strikeoutbool删除线
font.styleNamestring
font.underlinebool下划线
font.weightint字重
font.wordSpacingreal单词间距
fontInfo.boldbool
fontInfo.familystring
fontInfo.italicbool
fontInfo.pixelSizestring
fontInfo.pointSizereal
fontInfo.styleNamestring
fontInfo.weightint
fontSizeModeenumeration字体大小模式
Text.FixedSize(默认)- 使用font.pixelSize或font.pointSize指定的大小。
Text.HorizontalFit - 根据width调整最大字号。
Text.VerticalFit - 根据height使用最大字号。
Text.Fit - 根据宽高调整最大字号
需要使用minimumPointSize或minimumPixelSize指定最小边界,font.pointSize 或 font.pixelSize属性指定的最大边界
horizontalAlignmentenumeration水平对齐方式
hoveredLinkstring悬浮链接
leftPaddingreal
lineCountint行数,富文本不支持
lineHeightreal
lineHeightModeenumeration
linkColorcolor
maximumLineCountint
minimumPixelSizeint
minimumPointSizeint
paddingreal
renderTypeenumeration默认Qt渲染,可选Native渲染,可能出现锯齿
renderTypeQualityint渲染质量 ,大号字体需关注
rightPaddingreal
styleenumeration文本样式
styleColorcolor
textstring文本内容
textFormatenumeration
topPaddingreal
truncatedbool
verticalAlignmentenumeration垂直对齐方式
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
        }
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值