Byl jsem schopen se dostat váš kód frag pracovat - zdá se, že váš kód by měl záviset na obsah ScrollView
, ale to není zahrnuto v kódu frag, a to může být chybějící některé další odkazy.
Každopádně, navrhuji, blíží se to trochu jinak - změnit ScrollView
obsahu na šířku na základě toho, zda nebo ne ScrollBar
je viditelné. Také jsem nastavit ScrollBar
politiky namísto viditelnost. Vytvořil jsem kompletní příklad, kde můžete přidat nebo odstranit obsah pomocí posuvníku pro ukázku:
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 věc k poznámce, i když - vaše ScrollView
obsah, nemůže mít jeho výška závisí na jeho šířce, například, je-li obsah měl nějaké Text
to zábaly, pokud není dostatek šířku, což způsobuje to, aby se vyšší, když šířka klesá. To by se zpět do nekonečné smyčky území.