Sono stato in grado di ottenere il vostro codice di frag per il lavoro - sembra che il codice dovrebbe dipendono il contenuto del tuo ScrollView
ma questo non è incluso nel codice frag, e si potrebbe essere mancante di alcuni altri riferimenti.
Comunque, suggerisco che si avvicina un po ' diverso - modificare il ScrollView
's contenuto e larghezza in base a se o non la ScrollBar
è visibile. Ho anche impostato il ScrollBar
la politica, invece di visibilità. Ho creato un esempio completo in cui è possibile aggiungere o rimuovere i contenuti utilizzando un dispositivo di scorrimento per la dimostrazione:
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
}
}
}
}
}
}
Una cosa da notare, però - il ScrollView
il contenuto non può avere la sua altezza dipende dalla sua larghezza, per esempio, se il contenuto era qualche Text
che avvolge se non è sufficiente larghezza, causando per ottenere più alto quando la larghezza diminuisce. Questo sarebbe tornare in infinite loop territorio.