Qt QML使用具有多行文本的流中最后一行的剩余宽度

Qt QML使用具有多行文本的流中最后一行的剩余宽度,qt,text,formatting,qml,string-formatting,Qt,Text,Formatting,Qml,String Formatting,在QML中,我希望将一些文本放入有限的空间中。此文本包含本地化、静态和可变部分(文件名)。可变部分可能太长,无法放入我拥有的空间,如果发生这种情况,应将其删除。允许第一个部分换行到新行,本地化可能会这样做,也可能不会 我现在的问题是:两个文本都在一个流容器中,目的是将文件名附加到静态文本中。但是,如果第一个文本部分换行,则整个文本具有我所拥有的最大宽度,并且文件名将被放在新的一行上,即使第一部分的最后一行没有完全填满空间。请参见此图: 守则: Flow { width: parent.

在QML中,我希望将一些文本放入有限的空间中。此文本包含本地化、静态和可变部分(文件名)。可变部分可能太长,无法放入我拥有的空间,如果发生这种情况,应将其删除。允许第一个部分换行到新行,本地化可能会这样做,也可能不会

我现在的问题是:两个文本都在一个流容器中,目的是将文件名附加到静态文本中。但是,如果第一个文本部分换行,则整个文本具有我所拥有的最大宽度,并且文件名将被放在新的一行上,即使第一部分的最后一行没有完全填满空间。请参见此图:

守则:

Flow {
    width: parent.width
    spacing: 4
    Text {
        width: (contentWidth <= parent.width) ? contentWidth : parent.width
        text: qsTr("A string that might or might not wrap, depending on localisation")
        wrapMode: Text.WordWrap
    }
    Text {
        width: (contentWidth <= parent.width) ? contentWidth : parent.width
        text: fileName
        color: customColor
        elide: Text.ElideMiddle
        // ... more options
        MouseArea {
            anchors.fill: parent
            onClicked: //stuff
        }
    }
}
流{
宽度:parent.width
间距:4
正文{

宽度:(contentWidth我想出的唯一方法是非常粗糙的

问题是,
文本
是一个对象,周围有一个矩形边界框。此边界框由
用于定位

我的黑客解决方案背后的想法是,将文本分解为单个单词,然后由
定位。现在
知道最后一个单词的结尾,因此能够将下一个
文本
放在后面

Flow {
    id: flw
    property string text: "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    width: 300
    spacing: fnt.advanceWidth(' ')

    FontMetrics {
        id: fnt
    }

    Repeater {
        id: rep
        model: flw.text.split(' ')
        delegate: Text {
            font: fnt.font
            text: modelData
        }
    }

    Text {
        text: "C:/Some/Path/To/The/File/In/Question/File.extension"
        color: 'green'
        width: {
            var neighbor = rep.itemAt(rep.count - 1)
            parent.width - neighbor.x - neighbor.width - parent.spacing
        }
        elide: Text.ElideMiddle
    }
}

你能添加一张你想要的图片吗?我更新了这个问题