Nie udało mi się zmusić twój fragment kodu pracować - wygląda na to, że twój kod powinien zależeć od zawartości konta ScrollView
ale to nie jest wliczone w twój fragment kodu, w którym mogą być jakieś inne linki.
W każdym razie, proponuję podejść do tego trochę inaczej-zmienić ScrollView
szerokość zawartości zależy od tego, czy jest ScrollBar
jest to widoczne. Ja również zainstalowałem ScrollBar
polityka zamiast widoczności. Założyłem pełna przykład, w którym można dodawać lub usuwać treści za pomocą suwaka do demonstracji:
import QtQuick 2.15
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
ApplicationWindow {
id: root
visible: true
height: 500
width: 500
ColumnLayout {
anchors {
fill: parent
}
Slider {
// use slider to add delegates to the ScrollView to toggle the scroll bar visibility
id: slider
to: 20
}
ScrollView {
id: scroll
Layout.fillHeight: true
Layout.fillWidth: true
ScrollBar.vertical.policy: scrollBarVisible ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
property bool scrollBarVisible: scroll.contentHeight > scroll.height
ColumnLayout {
width: scroll.scrollBarVisible ? scroll.width - scroll.ScrollBar.vertical.width : scroll.width // change the width of the
Repeater {
model: slider.value
delegate: Rectangle {
color: "tomato"
Layout.fillWidth: true
Layout.preferredHeight: 150
}
}
}
}
}
}
Należy jednak zwrócić uwagę na jedną rzecz - twój ScrollView
zawartość nie może mieć wysokość, w zależności od jego szerokości, na przykład, jeśli zawartość miało pewne Text
to okazuje się, że jeśli nie ma wystarczającej szerokości, w wyniku czego staje się wyższy, kiedy szerokość zmniejsza się. To wróciło na terytorium nieskończonej pętli.