首页 > 解决方案 > QML:使用 RichText 时将文本包装到高度

问题描述

我正在尝试在 QMLText对象中显示一个长的(ish)HTML 文件。

当文本长于当前视口中无法显示时,它会被截断(即仅显示最后一行文本的一半,而下半部分被隐藏)。

通常,我会使用 elide 或 maximumLineCount,但在使用富文本时,这些属性都不起作用。由于这是一个完整的 HTML 文档,它必须是 RichText 而不是 StyledText。

例子:

Rectangle {
    width: 300;
    height: 400;
    Text {
        id: text
        anchors.fill: parent
        textFormat: Text.RichText
        wrapMode: Text.Wrap
        text: "..."
    }
}

我可以向 Text 或 Rectangle 添加什么样的属性/更改以使其仅显示可以以给定宽度和高度显示的文本?

我能找到的与这个问题相关的唯一其他问题是Qml: use Text's elide property with textFormat: RichText,但这对我来说并不实用。

标签: qtqmlqt5

解决方案


您最好将组件包装在ScrollViewText之类的容器中。Flickable是另一种选择。

ScrollView {
  width: 300
  height: 400
  clip: true

  Text {
    id: text
    textFormat: Text.RichText
    text: "..."
  } 
}

或者...如果您真的想将文本放在 a 中Rectagle并剪辑其内容,那么只需将clip您的属性设置Rectangletrue.

Rectangle {
    width: 300
    height: 400
    clip: true

    Text {
    }
}

推荐阅读