J'ai été incapable d'obtenir votre code frag de travail - il semble que votre code doit dépendre du contenu de votre ScrollView
mais ce n'est pas inclus dans votre code frag, et il peut manquer quelques autres références.
De toute façon, je suggère de s'approchant de cela un peu différemment - changer le ScrollView
's le contenu de la largeur de la base de si oui ou non les ScrollBar
est visible. J'ai également réglé le ScrollBar
de la politique au lieu de visibilité. J'ai créé un exemple complet d'où vous pouvez ajouter ou supprimer du contenu à l'aide d'un curseur pour la démonstration:
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
}
}
}
}
}
}
Une chose à noter, cependant, votre ScrollView
le contenu ne peut pas avoir sa hauteur dépend de sa largeur, par exemple, si le contenu avait quelques Text
qui enveloppe si il n'y a pas assez de largeur, à l'origine pour obtenir plus grand lorsque la largeur diminue. Ce serait revenir dans l'infini de la boucle de territoire.