【发布时间】:2018-01-07 14:32:50
【问题描述】:
所以我有一个矩形,里面有一个标签文本。如果文本太长而不能放在一行中,我想增加矩形的大小,否则应该保持不变。
到目前为止,我尝试使用 lineCount、clip、截断属性 qtdocs-
文本不合适,我得到省略号。但是,剪辑和截断总是返回 false。行数只返回当前行数,忽略它是否应该占用更多空间。
现在我正在尝试使用来自here 的contentWidth。然而,这总是返回一个等于或小于实际宽度的值。我认为这应该返回它应该占据的总值?
我怎样才能做到这一点?
编辑
我正在尝试这样的事情,但无论我的文本有多长或截断程度如何,内容宽度总是小于标签的宽度。我从 qml 文档中得到的印象是 contentWidth 甚至会考虑省略的文本。
Rectangle{
id: rec
...
Label{
id: messageText
height: Format.singleLine
text: "this text is very long and should be two lines"
Component.onCompleted: {
if (contentWidth > width){
rec.height = Format.multipleLines
}
}
}
}
第二次编辑
我了解到 lineCount 始终为 1 的原因是由于以编程方式创建对象(myRectangle 是包含标签的矩形):
messages.source = Qt.resolvedUrl("myRectangle.qml");
messages.item.message = message;
在创建标签的第一行之后,标签的 lineCount 为 1。然后我将尝试更改仅在此之后被截断的文本。
【问题讨论】:
-
我只想做这样的事情:width: (contentWidth > width)? Format.multipleLines : Format.singleLine;
标签: qt qml qtquickcontrols2