QRubberBand 类
QRubberBand 类提供了一块矩形或线,用于指示选择或边界。 更多...
头文件 | #include <QRubberBand> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承自 | QWidget |
公共类型
枚举 | Shape { Line, Rectangle } |
公共函数
QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr) | |
虚拟 | ~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 |
受保护的函数
虚拟 void | initStyleOption(QStyleOptionRubberBand *option) const |
重写受保护的函数
虚拟 void | changeEvent(QEvent *e) override |
虚拟 bool | event(QEvent *) override |
虚拟 void | moveEvent(QMoveEvent *) override |
虚拟 void | paintEvent(QPaintEvent *) override |
虚拟 void | resizeEvent(QResizeEvent *) override |
虚拟 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
()参数。
成员类型文档
枚举 QRubberBand::Shape
此枚举指定QRubberBand应具有的形状。这是一个传递给样式系统的绘图提示,每个QStyle都可以解析。
常量 | 值 | 描述 |
---|---|---|
QRubberBand::Line | 0 | QRubberBand可以表示垂直或水平线条。几何形状仍然在rect ()中给出,且线条将在大多数样式中填充给定的几何形状。 |
QRubberBand::Rectangle | 1 | QRubberBand可以表示矩形。某些样式将其解释为填充(通常是半透明)矩形或矩形轮廓。 |
成员函数文档
[显式]
QRubberBand::QRubberBand(QRubberBand::Shape , QWidget *p = nullptr)
使用形状translate="no">s和父对象p构造橡皮筋。
默认情况下,矩形橡皮筋(即translate="no">s为Rectangle
)将使用遮罩,因此矩形的一小部分才是可见的。某些样式(例如原生的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公司有限公司的商标。其他所有商标均归其各自所有者所有。