为什么Qt :: mightBeRichText()不将HTML表标记作为富文本删除?

时间:2017-02-09 15:09:08

标签: html text qml richtext

我在QML Text组件中使用HTML表。我的问题是textFormat: Text.AutoText无法自动将我的HTML表格识别为富文本格式(QML Text documentary)。

正在寻找一个我发现HTML formatting in QML Text的解决方案,这与我的问题非常接近。 给出的解决方案:只是设置我之前知道的textFormat: Text.RichText。但我无法使用它作为设置textFormat: Text.RichText也会更改QML文本组件的contentWidth行为。

Text {
  id: myPlainText
  width: 500
  wrapMode: Text.Wrap
  text: "Hallo stackoverflow.com"

  textFormat: Text.AutoText
}

Text {
  id: myRichText
  width: 500
  wrapMode: Text.Wrap
  text: "Hallo stackoverflow.com"      

  textFormat: Text.RichText
}

即使短于500,访问myPlainText.contentWidth也会给我实际使用的文本 访问myRichText.contentWidth总是给我500 对我来说,实际使用的信息是contentWidth,当不涉及RichText时,对于布局原因很重要,因为这是我的组件主要用于的。点击HTML表格的限制(例如500)就可以了,即使如此我也希望知道实际的表格。

1 个答案:

答案 0 :(得分:1)

来自Documentation

  

如果文本格式为Text.AutoText,则文本项将自动确定是否应将文本视为样式文本。使用Qt :: mightBeRichText()进行此确定,该Qt :: mightBeRichText()使用快速且因此简单的启发式算法。它主要检查在第一个换行符之前是否有看起来像标签的东西。虽然结果对于普通情况可能是正确的,但是没有保证。

正如您所看到的,它在普通样式文本之间分开。
第三类:自动图文集不支持 RichText

这意味着对于自动图文集,您需要求助于减少的标记集,如文档中所示:

<b></b> - bold
<strong></strong> - bold
<i></i> - italic
<br> - new line
<p> - paragraph
<u> - underlined text
<font color="color_name" size="1-7"></font>
<h1> to <h6> - headers
<a href=""> - anchor
<img src="" align="top,middle,bottom" width="" height=""> - inline images
<ol type="">, <ul type=""> and <li> - ordered and unordered lists
<pre></pre> - preformatted
&gt; &lt; &amp;

如果您需要文字的宽度,请尝试使用

myRichText.implicitWidth

如果没有包裹,这将为您提供文字的宽度 可能,由于先进的可能性,它始终使用最大contentWidth。因此,不可能使用例如elide以及RichTextcontentWidth的意外行为对我来说似乎是一个错误 - 无论是来源还是文档中更有可能。