Я создаю приложение для видеопроигрывателя с использованием QML.
В настоящее время у меня возникают проблемы с реализацией субтитров с помощью QML.
Мой текущий код для субтитров:
Rectangle {
id: nativeSubtitles
height: nativeSubs.font.pixelSize + 4
visible: true
anchors.left: controlsBar.left
anchors.right: controlsBar.right
anchors.bottom: progressBar.top
radius: 5
color: "transparent"
Label {
id: nativeSubs
width: parent.width
text: "SUBTITLES! OWO YESH f rre e er erwwew we wewe ew ew ew eew ewew ew ewwe3wwe ew "
color: "white"
font.family: notoFont.name
font.pixelSize: 24
renderType: Text.NativeRendering
horizontalAlignment: Text.AlignHCenter
opacity: 1
background: Rectangle {
color: "orange"
anchors.left: parent.left
anchors.right: parent.right
}
}
}
Это не работает так, как я хочу.
Как я хочу, чтобы субтитры работали, если они центрированы между левым и правым и нижним краями controlsbar
.
Если субтитрыЕсли его размер слишком велик, чтобы уместить его в ширину, текст должен разделиться и добавить еще одну линию для вертикального роста, но при этом закрепленную на нижней части панели управления.
Фон должен занимать только те области, где текст занят с внешним отступом 2.
Как мне это сделать?Я потратил целую вечность, пытаясь заставить мои вещи работать ...
РЕДАКТИРОВАТЬ: Новый код с фиксированной вертикальной упаковкой благодаря https://stackoverflow.com/a/52955752/10547967
Rectangle {
id: nativeSubtitles
height: nativeSubs.font.pixelSize + 4
visible: true
anchors.left: controlsBar.left
anchors.right: controlsBar.right
anchors.bottom: progressBar.top
radius: 5
color: "transparent"
Label {
id: nativeSubs
width: parent.width
text: "SUBTITLES! OWO YESH f rre e er erwwew we wewe ew ew ew eew ewew ew ewwe3wwe ew "
color: "white"
font.family: notoFont.name
font.pixelSize: 24
renderType: Text.NativeRendering
horizontalAlignment: Text.AlignHCenter
anchors.bottom: parent.top
opacity: 1
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
background: Rectangle {
color: "orange"
anchors.left: parent.left
anchors.right: parent.right
}
}
}
Теперь все этонеобходимо исправить - фон должен быть шириной текста только тогда, когда текст не занимает всю ширину пространства между левым и правым якорями панели управления