我在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)就可以了,即使如此我也希望知道实际的表格。
答案 0 :(得分:1)
如果文本格式为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
> < &
如果您需要文字的宽度,请尝试使用
myRichText.implicitWidth
如果没有包裹,这将为您提供文字的宽度
可能,由于先进的可能性,它始终使用最大contentWidth
。因此,不可能使用例如elide
以及RichText
。 contentWidth
的意外行为对我来说似乎是一个错误 - 无论是来源还是文档中更有可能。