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 |
詳しい説明
ラバーバンドは、(ドッキングを解除するQSplitter やQDockWidget のように)新しい境界領域を表示するためによく使用されます。歴史的に、これは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::Line | 0 | QRubberBand は、縦線または横線を表すことができます。ジオメトリはまだrect() で与えられ、線はほとんどのスタイルで与えられたジオメトリを埋めます。 |
QRubberBand::Rectangle | 1 | QRubberBand は矩形を表すことができます。スタイルによっては、これを塗りつぶされた(しばしば半透明の)矩形、または矩形の輪郭として解釈します。 |
メンバ関数 ドキュメント
[explicit]
QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
親をp とする、形状s の輪ゴムを構築します。
デフォルトでは、矩形の輪ゴム (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
この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) に位置し、寸法がwidth とheight で指定される矩形に設定します。ジオメトリは、親ウィジェットの座標系で指定されます。
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。