QScrollBar Class

QScrollBar ウィジェットは、垂直または水平スクロールバーを提供します。詳細...

Header: #include <QScrollBar>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QAbstractSlider

パブリック関数

QScrollBar(QWidget *parent = nullptr)
QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~QScrollBar()

再実装パブリック関数

virtual bool event(QEvent *event) override
virtual QSize sizeHint() const override

保護された関数

virtual void initStyleOption(QStyleOptionSlider *option) const

再実装された保護された関数

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void hideEvent(QHideEvent *) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override
virtual void sliderChange(QAbstractSlider::SliderChange change) override
virtual void wheelEvent(QWheelEvent *event) override

詳しい説明

スクロールバーは、ユーザがドキュメントの一部にアクセスするためのコントロールです。これは、ドキュメント内のユーザの現在位置と、ドキュメントの表示量を視覚的に示すものです。スクロールバーは通常、より正確なナビゲーションを可能にする他のコントロールを備えています。Qt では、各プラットフォームに適した方法でスクロール・バーを表示します。

他のウィジェットにスクロール・ビューを提供する必要がある場合は、QScrollArea クラスを使用する方が便利です。これは、ビューポート・ウィジェットとスクロール・バーを提供するからです。QScrollBar は、QAbstractScrollArea を使用する特殊なウィジェットに対して同様の機能を実装する必要がある場合に便利です。例えば、QAbstractItemView をサブクラス化する場合などです。スライダーコントロールが指定された範囲内の値を取得するために使用される他のほとんどの状況では、QSlider クラスの方がニーズに適しているかもしれません。

スライダー、スクロール矢印、ページコントロールです。
  • a.a.スライダーはドキュメントのどの部分にも素早く移動する方法を提供しますが、大きなドキュメント内での正確なナビゲーションはサポートしません。
  • b.b.スクロールアローはプッシュボタンで、ドキュメント内の特定の場所に正確に移動するために使用できます。テキストエディタに接続された垂直スクロールバーの場合、これらは通常、現在の位置を上下に1「行」移動させ、スライダの位置を少量ずつ調整します。エディタやリストボックスでは「行」はテキスト1行を意味し、画像ビューアでは20ピクセルを意味します。
  • c.ページコントロールは、スライダーがドラッグされる領域(スクロールバーの背景)です。ここをクリックすると、スクロールバーがクリックされた方向に「1ページ」移動します。この値は通常スライダーの長さと同じです。

各スクロール・バーには、スライダーがスクロール・バーの開始位置からどのくらい離れているかを示す値があります。この値は、value() で取得し、setValue() で設定します。この値は常に、minimum() からmaximum() までの、スクロールバーに定義された値の範囲内にある。許容値の範囲は、setMinimum() およびsetMaximum() で設定できる。最小値では、スライダーの上端 (垂直スクロールバーの場合) または左端 (水平スクロールバーの場合) がスクロールバーの上端 (または左端) になります。最大値では、スライダーの下端(または右端)はスクロールバーの下端(または右端)になります。

スライダーの長さは通常、ページステップの値に関連しており、通常、スクロールビューで表示されるドキュメント領域の割合を表します。ページステップとは、ユーザーがPage UpPage Down キーを押したときに値が変化する量のことで、setPageStep() で設定します。行ステップで定義された値に対するより小さな変更はカーソル・キーを使って行われ、この量はsetSingleStep ()で設定される。

使用される値の範囲は、スクロールバー・ウィジェットの実際のサイズとは無関係であることに注意。範囲とページステップの値を選択するときに、これを考慮する必要はない。

スライダーの長さを考慮する必要があるため、スクロールバーに指定される値の範囲は、QSlider の場合とは異なって決定されることがよくあります。100行のドキュメントがあり、ウィジェットに20行しか表示できない場合、ページステップを20、最小値を0、最大値を80とするスクロールバーを作成することができます。そうすれば、5つの "ページ "を持つスクロールバーができます。

ドキュメントの長さ、スクロールバーで使用する値の範囲、およびページステップの関係は、多くの一般的な状況では単純です。スクロールバーの値の範囲は、ドキュメントの長さを表す値から選択したページステップを引くことによって決まります。このような場合は、次の式が便利です:document length=maximum() -minimum() +pageStep()。

QScrollBar は整数範囲のみを提供します。QScrollBarは非常に大きな数値を扱いますが、現在の画面のスクロールバーは、約10万ピクセル以上の範囲を有用に表現できないことに注意してください。それ以上になると、ユーザーがキーボードやマウスを使ってスライダーを操作することが難しくなり、スクロール矢印の使用も制限されます。

ScrollBar はQAbstractSlider から包括的なシグナルセットを継承しています:

  • valueChanged() は、スクロールバーの値が変更されたときに発行されます。tracking()は、ユーザーとの対話中にこのシグナルが発せられるかどうかを決定します。
  • rangeChanged() は、スクロールバーの値の範囲が変更されたときに発せられます。
  • sliderPressed() は、ユーザーがスライダーをドラッグし始めたときに発せられます。
  • sliderMoved() は、ユーザーがスライダーをドラッグしたときに発せられます。
  • sliderReleased() は、ユーザーがスライダーを離したときに発せられます。
  • actionTriggered() は、ユーザー操作またはtriggerAction() 関数によってスクロール・バーが変更されたときに発せられます。

スクロールバーはキーボードで操作できますが、デフォルトのfocusPolicy() はQt::NoFocus です。スクロールバーでキーボード操作を有効にするにはsetFocusPolicy() を使用します:

  • 左/右は、水平スクロールバーを1ステップ移動させます。
  • Up/Downは、垂直スクロールバーを1ステップ移動します。
  • PageUp は1ページ分上に移動します。
  • PageDownは1ページ下に移動する。
  • Homeは先頭(最小)に移動します。
  • Endは最後(最大)に移動します。

スライダー自体は、triggerAction() 関数を使用することで、スクロールバーコントロールとのユーザーインタラクションをシミュレートして制御することができます。これは、共通の値の範囲を使用する多くの異なるウィジェットがある場合に便利です。

ほとんどのGUIスタイルでは、pageStep() の値を使用してスライダーのサイズを計算します。

QScrollArea,QSlider,QDial,QSpinBox,スライダーの例も参照してください

メンバ関数ドキュメント

[explicit] QScrollBar::QScrollBar(QWidget *parent = nullptr)

垂直スクロールバーを構築する。

parent 引数はQWidget コンストラクタに送られます。

minimum のデフォルトは 0、maximum のデフォルトは 99、singleStep のサイズは 1、pageStep のサイズは 10、value の初期値は 0。

[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)

与えられたorientation でスクロールバーを構築します。

parent 引数はQWidget コンストラクタに渡されます。

minimum のデフォルトは 0、maximum のデフォルトは 99、singleStep のサイズは 1、pageStep のサイズは 10、value の初期値は 0。

[virtual noexcept] QScrollBar::~QScrollBar()

スクロールバーを破棄します。

[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)

再実装:QWidget::contextMenuEvent(QContextMenuEvent *event)。

[override virtual] bool QScrollBar::event(QEvent *event)

再インプリメント:QAbstractSlider::event(QEvent *e)。

[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)

再リンプルメント: (QEvent *e):QWidget::hideEvent(QHideEvent *event)。

[virtual protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const

このQScrollBar の値でoption を初期化します。このメソッドは、サブクラスがQStyleOptionSlider を必要とするが、すべての情報を自分で入力したくない場合に便利です。

QStyleOption::initFrom()も参照

[override virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)

再実装:QWidget::mouseMoveEvent(QMouseEvent *event)。

[override virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)

再インプリメント:QWidget::mousePressEvent(QMouseEvent *event)。

[override virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)

再リプルメント: (QMouseEvent *event):QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QScrollBar::paintEvent(QPaintEvent *)

再リンプルメント: (QMouseEvent *event):QWidget::paintEvent(QPaintEvent *event)。

[override virtual] QSize QScrollBar::sizeHint() const

プロパティへのアクセス関数を再実装しています:QWidget::sizeHint.

[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)

再インプリメント:QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change).

[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)

再インプリメント:QAbstractSlider::wheelEvent(QWheelEvent *e)。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントのコントリビューションの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。