滚动条不显示

Scrollbar does not show-up

这个ScrollBar没有显示出来,我不明白为什么。 在我最好的尝试中,我得到了一个红色的大矩形,但无法使用它来水平滚动 idRootsGrid。我缺少什么?

Flickable {
    id: flickable
    Layout.alignment: Qt.AlignLeft
    Layout.fillWidth: true
    Layout.preferredHeight: idRootsGrid.implicitHeight
    clip: true
    ScrollBar.horizontal: ScrollBar {
        //anchors.top: flickable.top
        anchors.bottom: flickable.bottom
        //anchors.right: flickable.right
        //anchors.left: flickable.left
        active: true
        visible: true
        contentItem: Rectangle {
            id: contentItem_rect2
            radius: implicitHeight / 2
            color: "Red"
            width: 10 // This will be overridden by the width of the scrollbar
            height: 10 // This will be overridden based on the size of the scrollbar
        }
        //size: 10
        width: 5
   //height: 10
    }
    GridLayout {
        id: idRootsGrid
        columnSpacing: 5
        rowSpacing: 10
        Layout.alignment: Qt.AlignLeft
        rows: 1
        ...

谢谢!

我在您的代码中发现了两个问题。主要问题是您的 Scrollbar 的 contentItem 需要定义 implicitHeight。它使用 implicitHeight 而不是 height 来确定如何绘制它。

其次,您的 Flickable 需要知道其内容有多大,因此我必须将其 contentWidth 属性 设置为您的 GridLayout 的大小。

Flickable {
    id: flickable
    Layout.alignment: Qt.AlignLeft
    Layout.fillWidth: true
    Layout.preferredHeight: idRootsGrid.implicitHeight
    clip: true

    contentWidth: idRootsGrid.width

    ScrollBar.horizontal: ScrollBar {
        anchors.bottom: flickable.bottom
        active: true
        visible: true

        contentItem: Rectangle {
            id: contentItem_rect2
            radius: implicitHeight / 2
            color: "Red"

            implicitHeight: 10
        }
    }
    GridLayout { ... }
}