Bol som schopný sa dostať svoj kód frag do práce - vyzerá to, že váš kód by mal závisieť na obsah ScrollView
,, ale to nie je zahrnuté v kóde frag, a to môže byť chýbajúce niektoré ďalšie odkazy.
Každopádne, odporúčam blížiace sa to trochu inak - zmeniť ScrollView
"s obsahom šírky na základe toho, či sú, alebo nie ScrollBar
je viditeľné. Som tiež nastaviť ScrollBar
politika namiesto viditeľnosť. Vytvoril som plný príklad, kde môžete pridať alebo odstrániť obsah pomocou posuvníka pre demonštrácie:
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
}
}
}
}
}
}
Jedna vec je vedieť - váš ScrollView
obsah nemôže byť jeho výška závisí od jeho šírka, napríklad, ak obsah mal nejaké Text
že zábaly, ak nie je dostatok šírka, spôsobuje to, aby si vyšší, keď šírka klesá. To by dostať späť do nekonečnej slučky území.