このページでは

QRubberBand Class

QRubberBand クラスは、選択範囲や境界を示すことができる矩形または線を提供します。詳細...

ヘッダー: #include <QRubberBand>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QWidget

パブリック型

enum Shape { Line, Rectangle }

パブリック関数

QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
virtual ~QRubberBand()
void move(int x, int y)
void move(const QPoint &p)
void resize(int width, int height)
void resize(const QSize &size)
void setGeometry(const QRect &rect)
void setGeometry(int x, int y, int width, int height)
QRubberBand::Shape shape() const

プロテクト関数

virtual void initStyleOption(QStyleOptionRubberBand *option) const

再実装されたプロテクトされた関数

virtual void changeEvent(QEvent *e) override
virtual bool event(QEvent *e) override
virtual void moveEvent(QMoveEvent *) override
virtual void paintEvent(QPaintEvent *) override
virtual void resizeEvent(QResizeEvent *) override
virtual void showEvent(QShowEvent *e) override

詳細な説明

ゴムバンドは、新しい境界領域を示すためによく使用されます(QSplitter や、ドッキングを解除するQDockWidget など)。従来は、QPainter と XOR を使用して実装されていましたが、ゴムバンドの下にあるウィンドウでレンダリングが行われ、ゴムバンドが「消去」される前に表示されてしまう場合があるため、このアプローチは常に正しく機能するとは限りません。

特定の領域の周囲にラバーバンドを描画する必要がある場合(または単一の線を表現する場合)、QRubberBandを作成し、setGeometry()、move()、またはresize()を呼び出して、その位置やサイズを調整できます。一般的なパターンとして、これをマウスイベントと組み合わせて行うことがあります。例えば:

void Widget::mousePressEvent(QMouseEvent *event)
{
    origin = event->pos();
    if (!rubberBand)
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    rubberBand->hide();
    // determine selection, for example using QRect::intersects()
    // and QRect::contains().
}

QRubberBandのコンストラクタに親ウィジェットを指定すると、ラバーバンドはその親ウィジェットの内部にのみ表示されますが、他の子ウィジェットの上には常に表示されたままになります。親ウィジェットが指定されない場合、QRubberBandはトップレベルウィジェットとして動作します。

ラバーバンドを表示するには、show() を呼び出します。これは、ラバーバンドがトップレベルでない場合にも同様です。ウィジェットを非表示にしたり破棄したりすると、ラバーバンドも消えます。ラバーバンドは、コンストラクタで指定されたshape() に応じて、Rectangle またはLine (垂直または水平)のいずれかになります。

メンバ型のドキュメント

enum QRubberBand::Shape

この列挙型は、QRubberBand が持つべき形状を指定します。これはスタイルシステムに伝達される描画ヒントであり、各QStyle によって解釈されます。

定数値説明
QRubberBand::Line0QRubberBand は、垂直または水平の線を表すことができます。ジオメトリは依然としてrect()で指定され、ほとんどのスタイルでは、線は指定されたジオメトリを塗りつぶします。
QRubberBand::Rectangle1QRubberBand は、垂直線または水平線を表すことができます。ジオメトリは引き続き ()で指定され、ほとんどのスタイルでは、線が指定されたジオメトリを塗りつぶします。 は、矩形を表すこともできます。一部のスタイルでは、これを塗りつぶされた(多くの場合半透明の)矩形、または矩形のアウトラインとして解釈します。

メンバ関数のドキュメント

[explicit] QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)

s の形状を持つゴムバンドを、親としてp を指定して生成します。

デフォルトでは、長方形のラバーバンド(s がRectangle の場合)はマスクを使用するため、長方形のわずかな枠線のみが表示されます。一部のスタイル(例:macOSネイティブ)では、この動作が変更され、QWidget::setWindowOpacity()が呼び出されて、半透明で塗りつぶされた選択長方形が表示されます。

[virtual noexcept] QRubberBand::~QRubberBand()

デストラクタ。

[override virtual protected] void QRubberBand::changeEvent(QEvent *e)

QWidget::changeEvent(QEvent *event) を再実装します。

[override virtual protected] bool QRubberBand::event(QEvent *e)

QWidget::event(QEvent *event) の再実装です。

[virtual protected] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const

option を、QRubberBand の値を用いて初期化します。この方法は、QStyleOptionRubberBand が必要であるものの、すべての情報を自分で入力したくないサブクラスにとって便利です。

QStyleOption::initFrom()も参照してください 。

void QRubberBand::move(int x, int y)

ゴムバンドを点 (x,y) に移動します。

resize()も参照してください 。

void QRubberBand::move(const QPoint &p)

ゴムバンドをp の位置に移動させます。

これはオーバーロードされた関数です。

resize()も参照してください 。

[override virtual protected] void QRubberBand::moveEvent(QMoveEvent *)

QWidget::moveEvent(QMoveEvent *event) の再実装です。

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

QWidget::paintEvent(QPaintEvent *event) を再実装します。

void QRubberBand::resize(int width, int height)

ラバーバンドの幅をwidth 、高さをheight になるようにサイズを変更します。

move()も参照してください 。

void QRubberBand::resize(const QSize &size)

ラバーバンドのサイズを、size になるように変更します。

これはオーバーロードされた関数です。

move()も参照してください 。

[override virtual protected] void QRubberBand::resizeEvent(QResizeEvent *)

QWidget::resizeEvent(QResizeEvent *event) を再実装します。

void QRubberBand::setGeometry(const QRect &rect)

ゴムバンドのジオメトリを、親ウィジェットの座標系でrect に設定します。

「QWidget::geometry」も参照してください 。

void QRubberBand::setGeometry(int x, int y, int width, int height)

ラバーバンドのジオメトリを、左上隅が点 (x,y) にあり、寸法がwidth およびheight で指定された長方形に設定します。ジオメトリは親ウィジェットの座標系で指定されます。

これはオーバーロードされた関数です。

QRubberBand::Shape QRubberBand::shape() const

このラバーバンドの形状を返します。形状は生成時にのみ設定可能です。

[override virtual protected] void QRubberBand::showEvent(QShowEvent *e)

QWidget::showEvent(QShowEvent *event) を再実装します。

© 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.