QScrollArea Class
QScrollArea クラスは、別のウィジェットにスクロールするビューを提供します。詳細...
ヘッダ | #include <QScrollArea> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
継承: | QAbstractScrollArea |
プロパティ
- alignment : Qt::Alignment
- widgetResizable : bool
パブリック関数
QScrollArea(QWidget *parent = nullptr) | |
virtual | ~QScrollArea() |
Qt::Alignment | alignment() const |
void | ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50) |
void | ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50) |
void | setAlignment(Qt::Alignment) |
void | setWidget(QWidget *widget) |
void | setWidgetResizable(bool resizable) |
QWidget * | takeWidget() |
QWidget * | widget() const |
bool | widgetResizable() const |
再実装パブリック関数
virtual bool | focusNextPrevChild(bool next) override |
virtual QSize | sizeHint() const override |
再実装された保護された関数
virtual bool | event(QEvent *e) override |
virtual bool | eventFilter(QObject *o, QEvent *e) override |
virtual void | resizeEvent(QResizeEvent *) override |
virtual void | scrollContentsBy(int dx, int dy) override |
virtual QSize | viewportSizeHint() const override |
詳細説明
スクロールエリアは、フレーム内の子ウィジェットの内容を表示するために使用されます。ウィジェットがフレームのサイズを超える場合、子ウィジェットの全領域を表示できるように、ビューはスクロールバーを提供できます。子ウィジェットはsetWidget() で指定する必要があります。例えば
QLabel *imageLabel = new QLabel; QImage image("happyguy.png"); imageLabel->setPixmap(QPixmap::fromImage(image)); scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel);
上のコードは、画像ラベルを含むスクロール・エリア(下の画像に示す)を作成します。画像を拡大縮小するとき、スクロール・エリアは必要なスクロール・バーを提供することができます:
![]() | ![]() | ![]() |
スクロールバーの外観は、現在設定されているscroll bar policies に依存します。スクロールバーの外観は、QAbstractScrollArea から継承された機能を使用して制御できます。
たとえば、QAbstractScrollArea::horizontalScrollBarPolicy とQAbstractScrollArea::verticalScrollBarPolicy プロパティを設定できます。また、スクロール・エリアの内容が変更されたときにスクロール・バーを動的に調整したい場合は、horizontalScrollBar() およびverticalScrollBar() 関数(スクロール・バーにアクセスできる)を使用し、QScrollBar::setValue() 関数を使用して、スクロール・エリアの内容が変更されるたびにスクロール・バーの値を設定できます。
子ウィジェットは、widget() 関数を使用して取得できます。setWidgetResizable() 関数を使用して、ビューのサイズを変更できます。ウィジェットの配置は、setAlignment() で指定できます。
2つの便利な関数ensureVisible() とensureWidgetVisible() は、必要に応じてコンテンツをスクロールすることにより、コンテンツの特定の領域がビューポート内に表示されるようにします。
サイズのヒントとレイアウト
カスタムウィジェットのコンテンツを表示するためにスクロールエリアを使用する場合、子ウィジェットのsize hint が適切な値に設定されていることを確認することが重要です。子ウィジェットに標準のQWidget を使用する場合、ウィジェットの内容がスクロール・エリア内に正しく表示されるように、QWidget::setMinimumSize() を呼び出す必要があるかもしれません。
レイアウトに配置された子ウィジェットを含むウィジェットの内容を表示するためにスクロール・エリアを使用する場合、レイアウトのサイズ・ポリシーがウィジェットのサイズも決定することを理解することが重要です。これは、レイアウトの内容を動的に変更する場合に特に役立ちます。このような場合、レイアウトのsize constraint プロパティを、レイアウトの最小および/または最大サイズに制約を与えるもの(例えば、QLayout::SetMinAndMaxSize )に設定すると、レイアウトの内容が変更されるたびにスクロール領域のサイズが更新されます。
QAbstractScrollArea とQScrollBarも参照してください 。
プロパティ・ドキュメント
alignment : Qt::Alignment
このプロパティは、スクロール領域のウィジェットのアライメントを保持する。
有効な整列は、以下のフラグの組み合わせである:
Qt::AlignLeft
Qt::AlignHCenter
Qt::AlignRight
Qt::AlignTop
Qt::AlignVCenter
Qt::AlignBottom
デフォルトでは、ウィジェットはスクロールエリアの左上隅に固定されます。
アクセス関数
Qt::Alignment | alignment() const |
void | setAlignment(Qt::Alignment) |
widgetResizable : bool
このプロパティは、スクロールエリアがビューウィジェットのサイズを変更するかどうかを保持します。
このプロパティがfalse(デフォルト)に設定されている場合、スクロールエリアはそのウィジェットのサイズを保持します。このプロパティに関係なく、widget()->resize()を使用して、プログラムでウィジェットのサイズを変更することができます。
このプロパティがtrueに設定されている場合、スクロール・バーを避けるために、または余分なスペースを利用するために、スクロール・エリアは自動的にウィジェットのサイズを変更します。
アクセス関数:
bool | widgetResizable() const |
void | setWidgetResizable(bool resizable) |
メンバー関数ドキュメント
[explicit]
QScrollArea::QScrollArea(QWidget *parent = nullptr)
空のスクロール領域を、与えられたparent で構築します。
setWidget()も参照 。
[virtual noexcept]
QScrollArea::~QScrollArea()
スクロールエリアとその子ウィジェットを破棄します。
setWidget()も参照してください 。
void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)
xmargin とymargin によってピクセル単位で指定されたマージンを持つビューポートの領域内に点 (x,y) が見えるように、スクロール領域の内容をスクロールする。 指定された点に到達できない場合、内容は最も近い有効な位置にスクロールされる。両方のマージンのデフォルト値は50ピクセルである。
void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
xmargin とymargin でピクセル単位で指定されたマージンで、QScrollArea::widget() のchildWidget がビューポート内に表示されるように、スクロール領域のコンテンツをスクロールする。 指定されたポイントに到達できない場合、コンテンツは最も近い有効な位置にスクロールされる。両方のマージンのデフォルト値は50ピクセルである。
[override virtual protected]
bool QScrollArea::event(QEvent *e)
再実装:QAbstractScrollArea::event(QEvent *event)。
[override virtual protected]
bool QScrollArea::eventFilter(QObject *o, QEvent *e)
再インプリメント:QObject::eventFilter(QObject *watched, QEvent *event)。
[override virtual]
bool QScrollArea::focusNextPrevChild(bool next)
再インプリメント:QWidget::focusNextPrevChild(bool next).
[override virtual protected]
void QScrollArea::resizeEvent(QResizeEvent *)
再実装:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。
[override virtual protected]
void QScrollArea::scrollContentsBy(int dx, int dy)
再実装:QAbstractScrollArea::scrollContentsBy(int dx, int dy).
void QScrollArea::setWidget(QWidget *widget)
スクロールエリアのwidget を設定します。
widget はスクロールエリアの子になり、スクロールエリアが削除されるか、新しいウィジェットが設定されると破棄されます。
ウィジェットのautoFillBackground プロパティはtrue
に設定されます。
widget が追加されたときにスクロール・エリアが表示されている場合は、show() を明示的に追加する必要があります。
この関数を呼び出す前に、widget のレイアウトを追加する必要があることに注意してください。後から追加した場合、widget は、スクロール・エリアをshow() するタイミングに関係なく、表示されません。widget この場合、show() を後で追加することもできません。
widget()も参照 。
[override virtual]
QSize QScrollArea::sizeHint() const
再実装:QAbstractScrollArea::sizeHint() const.
QWidget *QScrollArea::takeWidget()
スクロールエリアのウィジェットを削除し、ウィジェットの所有権を呼び出し元に渡します。
widget()も参照してください 。
[override virtual protected]
QSize QScrollArea::viewportSizeHint() const
再実装:QAbstractScrollArea::viewportSizeHint() const.
QWidget *QScrollArea::widget() const
スクロールエリアのウィジェットを返し、なければnullptr
を返します。
setWidget()も参照してください 。
© 2025 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.