Tôi muốn đặt văn bản bên trong một bong bóng và tôi muốn bong bóng của tôi bằng với chiều rộng văn bản, nhưng nếu độ dài văn bản quá dài, tôi muốn văn bản tự động quấn và bằng với chiều rộng của bố mẹ.Lớp văn bản Qml (chiều rộng tối đa)
Mã này hoạt động nhưng văn bản này không gói nếu văn bản quá dài:
Rectangle {
id:messageBoxCadre
width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width+10
height: messageBox.height+5
color: modelData.myMessage ? "#aa84b2":"#380c47"
radius: 10
Text {
id:messageBox
text: '<b><font color=purple>'+modelData.message+'</font></b> '
wrapMode: "WordWrap"
}
}
và tôi đã cố gắng này, bọc văn bản, nhưng nếu văn bản là quá nhỏ chiều rộng bong bóng không bằng văn bản kích thước:
Rectangle {
id:messageBoxCadre
width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width+10
height: messageBox.height+5
color: modelData.myMessage ? "#aa84b2":"#380c47"
radius: 10
Text {
id:messageBox
width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width
text: '<b><font color=purple>'+modelData.message+'</font></b> '
wrapMode: "WordWrap"
}
}
Tôi đã thay đổi điều này, tôi cho rằng nó tốt hơn cho perf.thx – NicoMinsk
Tôi đã chơi một chút với ý tưởng kích hoạt thay đổi trên văn bản đang được sửa đổi, do đó, tạo một onTextChanged trong mục text_field, nhưng có vẻ như rằng onTextChanged được gọi trước khi paintWidth được cập nhật. Tuy nhiên, nó sẽ cho phép một cách khác để có một hộp văn bản động. Nhận xét này thực sự chỉ dành cho sự hoàn chỉnh. –
Tôi thích cách tiếp cận này nhiều hơn. Tôi không cần sử dụng 'paintWidth' để so sánh,' width' cũng hoạt động. –