QRubberBand Class

QRubberBandクラスは、選択範囲や境界を示す矩形や線を提供します。詳細...

Header: #include <QRubberBand>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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

詳しい説明

ラバーバンドは、(ドッキングを解除するQSplitterQDockWidget のように)新しい境界領域を表示するためによく使用されます。歴史的に、これはQPainter と XOR を使って実装されてきましたが、ラバーバンドの下のウィンドウで、ラバーバンドが「消去」される前にレンダリングが行われることがあるため、この方法は必ずしも正しく動作しません。

指定した領域(または1本の線)の周囲に輪ゴムをレンダリングする必要がある場合はいつでも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)

親をp とする、形状s の輪ゴムを構築します。

デフォルトでは、矩形の輪ゴム (sRectangle) はマスクを使用し、矩形の小さな境界線だけが見えるようになります。一部のスタイル(ネイティブ 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

このQRubberBand の値でoption を初期化します。このメソッドは、サブクラスが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) に位置し、寸法がwidthheight で指定される矩形に設定します。ジオメトリは、親ウィジェットの座標系で指定されます。

QRubberBand::Shape QRubberBand::shape() const

この輪ゴムの形状を返します。形状は、作成時にのみ設定できます。

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

再実装:QWidget::showEvent(QShowEvent *event)。

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