QRubberBand 类

QRubberBand 类提供了一块矩形或线,用于指示选择或边界。 更多...

头文件 #include <QRubberBand>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QWidget

公共类型

枚举Shape { Line, Rectangle }

公共函数

QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
虚拟~QRubberBand()
voidmove(int x, int y)
voidmove(const QPoint &p)
voidresize(int width, int height)
voidresize(const QSize &size)
voidsetGeometry(const QRect &rect)
voidsetGeometry(int x, int y, int width, int height)
QRubberBand::Shapeshape() const

受保护的函数

虚拟 voidinitStyleOption(QStyleOptionRubberBand *option) const

重写受保护的函数

虚拟 voidchangeEvent(QEvent *e) override
虚拟 boolevent(QEvent *) override
虚拟 voidmoveEvent(QMoveEvent *) override
虚拟 voidpaintEvent(QPaintEvent *) override
虚拟 voidresizeEvent(QResizeEvent *) override
虚拟 voidshowEvent(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()参数。

成员类型文档

枚举 QRubberBand::Shape

此枚举指定QRubberBand应具有的形状。这是一个传递给样式系统的绘图提示,每个QStyle都可以解析。

常量描述
QRubberBand::Line0QRubberBand可以表示垂直或水平线条。几何形状仍然在rect()中给出,且线条将在大多数样式中填充给定的几何形状。
QRubberBand::Rectangle1QRubberBand可以表示矩形。某些样式将其解释为填充(通常是半透明)矩形或矩形轮廓。

成员函数文档

[显式] QRubberBand::QRubberBand(QRubberBand::Shape , QWidget *p = nullptr)

使用形状translate="no">s和父对象p构造橡皮筋。

默认情况下,矩形橡皮筋(即translate="no">sRectangle)将使用遮罩,因此矩形的一小部分才是可见的。某些样式(例如原生的macOS)会更改此行为,并调用QWidget::setWindowOpacity()以创建半透明的填充选择矩形。

[虚诺释放] QRubberBand::~QRubberBand()

析构函数。

[重写虚保护] void QRubberBand::changeEvent(QEvent *e)

重新实现: QWidget::changeEvent(QEvent *event)。

[重写虚保护] bool QRubberBand::event(QEvent *e)

重新实现: QWidget::event(QEvent *event)。

[虚保护] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const

使用此 RationalBand 的值初始化 option。此方法对子类很有用,当它们需要QStyleOptionRubberBand但又不想自己填充所有信息时。

另请参阅 QStyleOption::initFrom

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

将橡皮筋移动到点 (x, y)。

另请参阅 resize

void QRubberBand::move(const QPoint &p)

这是一个重载函数。

将橡皮筋移动到点

另请参阅 resize

[重载虚拟受保护] void QRubberBand::moveEvent(QMoveEvent *)

重实现: QWidget::moveEvent(QMoveEvent *event)

[重载虚拟受保护] void QRubberBand::paintEvent(QPaintEvent *)

重实现: QWidget::paintEvent(QPaintEvent *event)

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

将橡皮筋的宽度调整为,高度调整为

另请参阅 move

void QRubberBand::resize(const QSize &size)

这是一个重载函数。

将橡皮筋调整到新的大小

另请参阅 move

[重载虚拟受保护] void QRubberBand::resizeEvent(QResizeEvent *)

重实现: QWidget::resizeEvent(QResizeEvent *event)

void QRubberBand::setGeometry(const QRect &rect)

将橡皮筋的几何形状设置为,在父小部件的坐标系中指定。

另请参阅 QWidget::geometry

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

这是一个重载函数。

将橡皮筋的几何形状设置为位于点(, )的矩形,其尺寸由指定。几何形状由父小部件的坐标系指定。

QRubberBand::Shape QRubberBand::shape() const

返回这个橡皮筋的形状。形状只能在构造时设置。

[重载虚拟受保护] void QRubberBand::showEvent(QShowEvent *e)

重实现: QWidget::showEvent(QShowEvent *event)

© 2024 Qt公司有限公司版权所有。本文件内的文档贡献均为其各自所有者的版权。本文件内的文档根据自由软件基金会发布的GNU自由文档许可证版本1.3条款许可。Qt及其相应标志是芬兰及/或世界其他国家的Qt公司有限公司的商标。其他所有商标均归其各自所有者所有。