Am fost în imposibilitatea de a obține codul dvs. frag la locul de muncă - se pare ca codul ar trebui să depindă de conținutul de ScrollView
, dar acest lucru nu este inclus în codul de frag, si poate fi lipsesc unele alte referințe.
Oricum, sugerez să se apropie acest lucru un pic diferit - schimba ScrollView
modelului lățime conținutul în funcție de dacă sau nu ScrollBar
este vizibilă. Am stabilit, de asemenea, ScrollBar
politica în loc de vizibilitate. Am creat un exemplu complet, unde puteți adăuga sau elimina conținut folosind un slider pentru demonstrație:
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
}
}
}
}
}
}
Un lucru de remarcat, deși - ta ScrollView
conținutul nu poate avea înălțimea depinde de lățimea sa, de exemplu, în cazul în care conținutul a avut unele Text
care se infasoara dacă nu există suficientă lățime, determinând-o să mă mai înalt atunci când lățimea scade. Acest lucru s-ar întoarce în infinit buclă teritoriu.