Vorrei mettere il testo all'interno di una bolla e voglio che la mia bolla sia uguale alla larghezza del testo, ma se la lunghezza del testo è troppo lunga, vorrei che il testo si avvolgesse automaticamente ed essere uguale alla larghezza genitore.Qml text wrap (larghezza massima)
Questo codice funziona, ma il testo non è avvolgente se il testo è troppo lungo:
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"
}
}
e ho provato questo, avvolgere il testo, ma se il testo è troppo piccola la larghezza bolla non è uguale al testo dimensioni:
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"
}
}
ho cambiato, suppongo che sia meglio per perf.thx – NicoMinsk
Ho giocato un po 'con l'idea di attivare una modifica sul testo in fase di modifica, quindi creare un onTextChanged all'interno dell'elemento text_field, ma sembra che onTextChanged viene chiamato prima che paintedWidth venga aggiornato. Tuttavia, consentirebbe un modo alternativo per avere una casella di testo dinamica. Questo commento è davvero solo per completezza. –
Mi è piaciuto molto questo approccio. Non ho bisogno di usare 'paintedWidth' per il confronto,' width' ha funzionato pure. –