Era incapaz de obtener su código de fragmentación para el trabajo - parece que el código debe depender de los contenidos de su ScrollView
pero esto no está incluido en el código de fragmentación, y puede ser que faltan algunas otras referencias.
De todos modos, sugiero acercarse un poco diferente - cambiar el ScrollView
's el contenido de la anchura en función de si o no el ScrollBar
es visible. También he puesto el ScrollBar
la política en lugar de visibilidad. He creado un ejemplo completo donde usted puede añadir o eliminar los contenidos mediante un control deslizante para la demostración:
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 a tener en cuenta a pesar de que su ScrollView
el contenido no puede tener su altura depende de su ancho, por ejemplo, si el contenido de algunos Text
que envuelve si no hay suficiente ancho, haciendo que para llegar más alto cuando el ancho disminuye. Este sería volver a infinito bucle de territorio.