【发布时间】:2015-03-28 18:32:16
【问题描述】:
我必须执行一个非常简单的任务:我想在一个矩形内显示一段文本,并且该矩形的大小应该正好是文本的宽度。
在 C++ 中,这很容易做到。只需定义 QString 并应用 QFontMetrics 即可获得其宽度。然后将矩形图形元素定义为具有该大小。它在五分钟内完成。
我听说 QML 更易于使用。因此,我希望在不到五分钟的时间内解决这个问题。我没有,我仍然坚持下去。这是我尝试过的:
Rectangle {
width: myText.contentWidth
height: myText.contentHeight
Text {
anchors.fill:parent
id: myText
font.family: "Helvetica"
font.pointSize: 50
text: qsTr("The string I want to display")
}
}
由于某种我不明白的原因,这不起作用。我找到了一种不完全适合我需要的方法:
Rectangle {
width: 100
height: 100
MouseArea {
id: myMouseArea
anchors.fill: parent
onClicked: parent.width=myText.contentWidth
hoverEnabled: true
}
Text {
anchors.fill:parent
id: myText
font.family: "Helvetica"
font.pointSize: 50
text: qsTr("The string I want to display")
}
}
在这种情况下,当我单击矩形时,它会获得正确的宽度。不过,我对这个解决方案不感兴趣,因为我不想点击以获得正确大小的矩形。
我希望每当myText 更改文本时矩形的大小都会正确。在 Text 项中使用 onTextChanged 也不起作用。
我在这里错过了什么?
【问题讨论】:
-
QML 对于某些任务来说更容易。容易多了。这并不意味着它提供了与 Qt 本身一样成熟的 API。相反,它正在改进和扩展,发布后发布。