QML Text 元素属性详解
wrapMode 属性详解
wrapMode
属性控制文本在达到其边界宽度时如何进行换行处理。
可用值:
-
Text.NoWrap(默认值)
- 文本不会换行
- 文本会延伸超出组件边界
- 超出的文本将不可见(除非设置了clip:false)
- 适用场景:单行标签、不允许换行的UI元素
-
Text.WordWrap
- 在单词边界处换行
- 中文会在字符间换行
- 英文会在单词间的空格处换行
- 适用场景:正文段落、需要保持单词完整性的文本
-
Text.WrapAnywhere
- 在任何字符处换行
- 不考虑语义和单词边界
- 可能会导致单词被拆分到不同行
- 适用场景:空间严格受限、需要尽可能多显示文本内容的情况
-
Text.Wrap
- 等同于Text.WordWrap,为保持向后兼容而存在
-
Text.WrapAtWordBoundaryOrAnywhere
- 首先尝试在单词边界处换行
- 如果不能在单词边界换行才在任何字符处换行
- 这是一种折中方案
- 适用场景:优先保持阅读体验,但又必须适应有限空间的情况
elide 属性详解
elide
属性定义了当文本内容超出可用空间且不能完全换行显示时,如何处理文本省略。
可用值:
-
Text.ElideNone(默认值)
- 不省略任何文本
- 与wrapMode配合使用时会换行显示
- 如果设置了最大行数限制,超出部分将被截断不显示
- 适用场景:必须显示完整内容的文本区域
-
Text.ElideRight
- 在文本末尾显示省略号(…)
- 保留文本开头部分
- 最常用的省略方式
- 适用场景:文件名、标题等重要信息在前面的文本
-
Text.ElideLeft
- 在文本开头显示省略号(…)
- 保留文本结尾部分
- 适用场景:文件扩展名、时间戳等重要信息在后面的文本
-
Text.ElideMiddle
- 在文本中间显示省略号(…)
- 保留开头和结尾部分
- 适用场景:长路径显示、需同时展示首尾内容的情况
其他重要文本属性
-
maximumLineCount
- 设置文本可显示的最大行数
- 超出行数的文本会被截断
- 与elide属性配合使用可显示省略号
- 例如:
maximumLineCount: 2
实现"两行文本,末尾省略"效果
-
lineHeight 和 lineHeightMode
- 控制行高
lineHeight
设置行高的具体值lineHeightMode
设置行高的计算方式(固定高度或比例)
-
textFormat
Text.PlainText
: 纯文本格式Text.RichText
: HTML富文本格式Text.MarkdownText
: Markdown格式Text.AutoText
: 自动检测格式(默认)
-
horizontalAlignment 和 verticalAlignment
- 控制文本的水平和垂直对齐方式
- 水平:
Text.AlignLeft
,Text.AlignRight
,Text.AlignHCenter
,Text.AlignJustify
- 垂直:
Text.AlignTop
,Text.AlignBottom
,Text.AlignVCenter
-
truncated
- 只读属性,指示文本是否被截断
- 可以用来检测文本是否完全显示
属性相互作用
- wrapMode + width:只有设置了宽度限制,换行属性才会生效
- elide + maximumLineCount:只有设置了最大行数,省略属性才会在最后一行生效
- elide + wrapMode:当同时设置时,会先应用换行,然后在最后一行应用省略
使用示例
Text {
width: 200
text: "这是一段很长的测试文本,用来演示各种文本处理属性的效果和相互作用。"
wrapMode: Text.WordWrap
elide: Text.ElideRight
maximumLineCount: 2
font.pixelSize: 14
horizontalAlignment: Text.AlignHCenter
}
这个例子会创建一个宽度为200的文本区域,文本会自动在单词边界换行,最多显示2行,如果超出2行则在第2行末尾显示省略号,同时文本在水平方向居中对齐。