Qt 5.6 neue Bedienungselemente wie die technische Vorschau "Qt Labs Controls". Unter anderem führen die Kontrollen einen eingebauten Typ (interaktiv) ScrollBar
und ScrollIndicator
ein (nicht interaktiv).
In Qt 5.7 haben neue Steuerelemente die technische Vorschau verlassen und wurden nun in "Quick Controls 2" umbenannt, um die Tatsache zu betonen, dass sie die vorherigen Steuerelemente übertrafen.
Wenn Sie Qt 5.6 verwenden, die eine LTS-Version und wird um irgendwann für recht sein kann ScrollBar
wie folgt verwendet werden:
import QtQuick 2.6
import Qt.labs.controls 1.0
import QtQuick.Window 2.2
ApplicationWindow {
visible: true
width: 400
height: 600
Flickable {
anchors.fill: parent
contentWidth: image.width
contentHeight: image.height
//ScrollIndicator.vertical: ScrollIndicator { } // uncomment to test
ScrollBar.vertical: ScrollBar { }
ScrollBar.horizontal: ScrollBar { }
Image {
id: image
source: "http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"
}
}
}
Während in Qt 5.7 und weiter können Sie ScrollBar
oder ScrollIndicator
verwenden wie folgt:
import QtQuick 2.6
import QtQuick.Controls 2.0
import QtQuick.Window 2.2
ApplicationWindow {
visible: true
width: 600
height: 300
Flickable {
anchors.fill: parent
contentWidth: image.width
contentHeight: image.height
ScrollIndicator.vertical: ScrollIndicator { }
//ScrollBar.vertical: ScrollBar { } // uncomment to test
Image {
id: image
source: "http://s-media-cache-ak0.pinimg.com/736x/92/9d/3d/929d3d9f76f406b5ac6020323d2d32dc.jpg"
}
}
}
Usage Syntax so ziemlich das gleiche ist, während eine große Refactoring im Styling Code aufgetreten wie in Beispiel gesehen werden Labs Controls ScrollIndicator
customization page im Vergleich zu Quick Controls 2 ScrollIndicator
customization page.
+1 für die Antwort :) –
Vielen Dank! Sehr flexible und effiziente Lösung. Das einzige, was fehlt, ist die horizontale Ausrichtung.Da ListView dies unterstützt, werde ich eine Eigenschaft Bindung hinzufügen, um horizontal zu scrollen. –
Wenn wir die Anzahl der Delegierten interaktiv ändern, wird die Bindungsschleife dafür erkannt: 'Binding { target: flickable; Eigentum: "contentY"; Wert: (handle.y * (flickable.contentHeight - flickable.height)/clicker.drag.maximumY); wenn: (clicker.drag.active || clicker.presed); } ' Und das ganze Scrollen ist dann gebrochen. Wir können Vater dann ContentHeight scrollen. Kannst du, bitte, dabei helfen? – VALOD9