このページでは

ScrollBar QML Type

縦または横方向のインタラクティブなスクロールバー。詳細...

Import Statement: import QtQuick.Controls
Inherits:

Control

プロパティ

関連するプロパティ

方法

詳細説明

スクロールバーは、特定の位置までスクロールするために使用できるインタラクティブなバーです。スクロールバーは、vertical またはhorizontal のいずれかであり、ListView やGridView などの任意のFlickable に添付することができます。また、ScrollView でも使用可能です。

Flickable {
    // ...
    ScrollBar.vertical: ScrollBar { }
}

ScrollBarをFlickableにアタッチする

ScrollBarがvertically またはhorizontally 経由でFlickableにアタッチされると、そのジオメトリおよび以下のプロパティが自動的に設定され、必要に応じて更新されます:

アタッチされた ScrollBar は、対象の Flickable を親として再設定します。垂直方向にアタッチされた ScrollBar は、Flickable の高さに合わせてサイズを変更し、layout direction に基づいて Flickable のどちらかの側に配置されます。水平方向にアタッチされた ScrollBar は、Flickable の幅に合わせてサイズを変更し、下部に配置されます。 アタッチされたScrollBarに別の親を指定することで、この自動ジオメトリ管理を無効にできます。これは、例えば、ScrollBarをクリッピング対象のFlickableの外側に配置したい場合などに役立ちます。以下の例でこれを示します:

Flickable {
    id: flickable
    clip: true
    // ...
    ScrollBar.vertical: ScrollBar {
        parent: flickable.parent
        anchors.top: flickable.top
        anchors.left: flickable.right
        anchors.bottom: flickable.bottom
    }
}

なお、ScrollBarは、自身がアタッチされているFlickableのキーイベントをフィルタリングしない点に注意してください。以下の例は、上矢印キーと下矢印キーによるスクロールを実装する方法を示しています:

Flickable {
    focus: true

    Keys.onUpPressed: scrollBar.decrease()
    Keys.onDownPressed: scrollBar.increase()

    ScrollBar.vertical: ScrollBar { id: scrollBar }
}

水平および垂直スクロールバーのアクティブ状態のバインディング

水平および垂直スクロールバーは、デフォルトではactive 状態を互いに共有しません。どちらの方向にスクロールしても両方のバーを表示し続けるには、次の例に示すように、アクティブ状態間で双方向のバインディングを設定します。

Flickable {
    anchors.fill: parent

    contentWidth: parent.width * 2
    contentHeight: parent.height * 2

    ScrollBar.horizontal: ScrollBar { id: hbar; active: vbar.active }
    ScrollBar.vertical: ScrollBar { id: vbar; active: hbar.active }
}

アタッチメントを使用しないスクロールバー

アタッチドプロパティ API を使用せずに ScrollBar のインスタンスを作成することも可能です。これは、アタッチドスクロールバーの動作では不十分である場合や、Flickable を使用していない場合に役立ちます。次の例では、Flickable を使用せずに、水平および垂直スクロールバーを使用してテキストをスクロールしています:

Rectangle {
    id: frame
    clip: true
    width: 160
    height: 160
    border.color: "black"
    anchors.centerIn: parent

    Text {
        id: content
        text: "ABC"
        font.pixelSize: 160
        x: -hbar.position * width
        y: -vbar.position * height
    }

    ScrollBar {
        id: vbar
        hoverEnabled: true
        active: hovered || pressed
        orientation: Qt.Vertical
        size: frame.height / content.height
        anchors.top: parent.top
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }

    ScrollBar {
        id: hbar
        hoverEnabled: true
        active: hovered || pressed
        orientation: Qt.Horizontal
        size: frame.width / content.width
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }
}

プロパティが紐付けられていない、単体で使用されるスクロールバー

アタッチされていないScrollBarを使用する場合、以下の処理を手動で行う必要があります:

  • スクロールバーのレイアウトを設定します(例:x およびy またはanchors プロパティを使用)。
  • size およびposition プロパティを設定し、スクロール対象のアイテムに対するスクロールバーのサイズと位置を決定します。
  • active プロパティを設定して、スクロールバーが表示されるタイミングを決定します。

デリゲートのサイズのばらつき

デリゲートのサイズが変動すると、新しいデリゲートがビューに読み込まれる際に、ScrollBar が「飛び跳ねる」ような動作をする可能性があります。このため、デリゲートのサイズを均一に保つことをお勧めします。詳細については、「Variable Delegate Size and Section Labels 」を参照してください。

「 ScrollIndicator」 、「ScrollView 」、「ScrollBarのカスタマイズ」、および「インジケーター コントロール」も参照してください 。

プロパティのドキュメント

active : bool

このプロパティは、スクロールバーがアクティブな場合、つまりpressed の状態である場合や、関連付けられたFlickableがmoving の状態である場合にも有効です。

どちらの方向にスクロールしても、both horizontal and vertical bars visible の状態を維持することが可能です。

このプロパティは、スクロールバーがattached to a flickable の状態にあるときに自動的に設定されます。

horizontal : bool [read-only, since QtQuick.Controls 2.3 (Qt 5.10)]

このプロパティは、スクロールバーが水平であるかどうかを示します。

このプロパティは、QtQuick.Controls 2.3 (Qt 5.10) で導入されました。

orientationも参照してください 。

interactive : bool [since QtQuick.Controls 2.2 (Qt 5.9)]

このプロパティは、スクロールバーが操作可能かどうかを指定します。デフォルト値は `true` です。

非インタラクティブなスクロールバーは、外観および動作がScrollIndicator と似ています。このプロパティは、インタラクティブなスクロールバーと非インタラクティブなスクロールバーをそれぞれ備えた、一般的なマウス操作向けUIとタッチ操作向けUIを切り替える際に役立ちます。

このプロパティは、QtQuick.Controls 2.2 (Qt 5.9) で導入されました。

minimumSize : real [since QtQuick.Controls 2.4 (Qt 5.11)]

このプロパティは、0.0 - 1.0 にスケーリングされたスクロールバーの最小サイズを保持します。

このプロパティは、QtQuick.Controls 2.4 (Qt 5.11) で導入されました。

size 、visualSize 、およびvisualPositionも参照してください 。

orientation : enumeration

このプロパティは、スクロールバーの向きを指定します。

取り得る値:

定数説明
Qt.Horizontal水平
Qt.Vertical垂直 (既定値)

このプロパティは、スクロールバーがattached to a flickable に設定されている場合に自動的に設定されます。

「 horizontal 」および「vertical 」も参照してください 。

policy : enumeration [since QtQuick.Controls 2.2 (Qt 5.9)]

このプロパティは、スクロールバーのポリシーを指定します。デフォルトのポリシーは「ScrollBar.AsNeeded 」です。

指定可能な値:

Constant説明
ScrollBar.AsNeededコンテンツが画面に収まらない場合にのみ、スクロールバーが表示されます。
ScrollBar.AlwaysOffスクロールバーは一切表示されません。
ScrollBar.AlwaysOnスクロールバーは常に表示されます。

次の例では、垂直スクロールバーを常に表示したままにしています。

Flickable {
    contentHeight: 2000
    ScrollBar.vertical: ScrollBar {
        policy: ScrollBar.AlwaysOn
    }
}

スタイルでは、一時的なスクロールバーを実装するために、このプロパティをactive プロパティと組み合わせて使用することができます。 一時的なスクロールバーは、最後のインタラクションイベント(ホバーまたは押下)の直後に非表示になります。これは通常、スクロールバーの不透明度をアニメーションさせることで行われます。この動作を上書きするには、コンテンツのサイズとビューのサイズとの比較に応じて、ポリシーをScrollBar.AlwaysOn またはScrollBar.AlwaysOff に設定します。たとえば、垂直方向のListView の場合:

policy: listView.contentHeight > listView.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff

このプロパティは、QtQuick.Controls 2.2 (Qt 5.9) で導入されました。

position : real

このプロパティは、0.0 - 1.0 にスケーリングされたスクロールバーの位置を保持します。

有効なスクロールバーの位置の最大値は `(1.0 - size)` です。これにより、スクロールバーを末尾まで移動させた際に、ドキュメントの末尾が接続された `Flickable` の表示領域の下端に配置されるという、最も一般的な使用ケースにおいて正しい動作が得られます。

このプロパティは、スクロールバーが `attached to a flickable` の場合に自動的に設定されます。

「 Flickable::visibleArea 」および「visualPosition 」も参照してください 。

pressed : bool

このプロパティは、スクロールバーが押されているかどうかを表します。

size : real

このプロパティには、0.0 - 1.0 にスケーリングされたスクロールバーのサイズが格納されます。

このプロパティは、スクロールバーがattached to a flickable である場合に自動的に設定されます。

「 Flickable::visibleArea 」、「minimumSize 」、および「visualSize 」も参照してください 。

snapMode : enumeration [since QtQuick.Controls 2.2 (Qt 5.9)]

このプロパティはスナップモードを保持します。

取り得る値:

定数説明
ScrollBar.NoSnapスクロールバーはスナップしません(デフォルト)。
ScrollBar.SnapAlwaysドラッグ中にスクロールバーがスナップします。
ScrollBar.SnapOnReleaseドラッグ中はスナップせず、指を離した後にのみスナップします。

次の表では、さまざまなモードがアニメーションで示されています。各アニメーションにおいて、動きとstepSize (0.25 )は同一です。

値例
ScrollBar.NoSnap

ScrollBar.SnapAlways

ScrollBar.SnapOnRelease

このプロパティは、QtQuick.Controls 2.2 (Qt 5.9) で導入されました。

stepSizeも参照してください 。

stepSize : real

このプロパティはステップサイズを保持します。デフォルト値は0.0 です。

「 snapMode 」、「increase()」、および「decrease()」も参照してください 。

vertical : bool [read-only, since QtQuick.Controls 2.3 (Qt 5.10)]

このプロパティは、スクロールバーが垂直であるかどうかを示します。

このプロパティは、QtQuick.Controls 2.3 (Qt 5.10) で導入されました。

orientationも参照してください 。

visualPosition : real [read-only, since QtQuick.Controls 2.4 (Qt 5.11)]

このプロパティは、スクロールバーの実際の表示位置を保持します。この位置は、minimum size によって制限される場合があります。

このプロパティは、QtQuick.Controls 2.4 (Qt 5.11) で導入されました。

「 position 」および「minimumSize 」も参照してください 。

visualSize : real [read-only, since QtQuick.Controls 2.4 (Qt 5.11)]

このプロパティは、スクロールバーの実際の表示サイズを保持します。このサイズは、minimum size によって制限される場合があります。

このプロパティは、QtQuick.Controls 2.4 (Qt 5.11) で導入されました。

「 size 」および「minimumSize 」も参照してください 。

関連プロパティのドキュメント

ScrollBar.horizontal : ScrollBar [attached]

このプロパティは、Flickable に水平スクロールバーを追加します。

Flickable {
    contentWidth: 2000
    ScrollBar.horizontal: ScrollBar { }
}

「Attaching ScrollBar to a Flickable」も参照してください 。

ScrollBar.vertical : ScrollBar [attached]

このプロパティは、Flickable に垂直スクロールバーを追加します。

Flickable {
    contentHeight: 2000
    ScrollBar.vertical: ScrollBar { }
}

「Attaching ScrollBar to a Flickable」も参照してください 。

メソッドのドキュメント

void decrease()

stepSize が0.0 の場合、位置をstepSize または0.1 だけ減少させます。

stepSizeも参照してください 。

void increase()

stepSize が0.0 の場合、位置をstepSize または0.1 だけ増やします。

stepSizeも参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.