class QRubberBand#

QRubberBand类提供了一个矩形或线,可以指示选择区域或边界。更多

Inheritance diagram of PySide6.QtWidgets.QRubberBand

概要#

方法#

虚方法#

注意

本文档可能包含从C++自动转换到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建问题单来告知我们。

详细描述#

警告

本节包含从C++自动转换为Python的代码片段,可能包含错误。

橡皮筋通常用于显示新的边界区域(如在 QSplitter 或一个未停靠的 QDockWidget 中)。从历史上看,这通常是使用 QPainter 和 XOR 来实现的,但由于渲染可能会在橡皮筋被“擦除”之前发生在橡皮筋以下的窗口中,因此这种方法并不总是正常工作。

您可以在需要围绕给定区域(或表示单行)渲染橡皮筋时创建一个 QRubberBand,然后调用 setGeometry()move()resize() 来定位和调整其大小。一种常见的模式是将此与鼠标事件结合使用。例如

def mousePressEvent(self, event):

    origin = event.pos()
    if not rubberBand:
        rubberBand = QRubberBand(QRubberBand.Rectangle, self)
    rubberBand.setGeometry(QRect(origin, QSize()))
    rubberBand.show()

def mouseMoveEvent(self, event):

    rubberBand.setGeometry(QRect(origin, event.pos()).normalized())

def mouseReleaseEvent(self, event):

    rubberBand.hide()
    # determine selection, for example using QRect::intersects()
    # and QRect::contains().

如果您将父级传递给 QRubberBand 的构造函数,橡皮筋将只在其父级内部显示,但保持在其他子小部件之上。如果没有传递父级,QRubberBand 将充当顶级小部件。

调用 show() 使橡皮筋可见;即使橡皮筋不是顶级小部件也是如此。隐藏或销毁小部件将使橡皮筋消失。橡皮筋可以是 RectangleLine(垂直或水平),具体取决于在构造时赋予的 shape()

class Shape#

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

常量

描述

QRubberBand.Line

一个 QRubberBand 可以表示垂直或水平线。几何形状仍然由 rect() 提供,并且该线条将在大多数样式上填充给定的几何形状。

QRubberBand.Rectangle

QRubberBand 可以表示一个矩形。某些样式会将这解释为填充(通常是半透明)的矩形或矩形的轮廓。

__init__(arg__1[, parent=None])#
参数:

创建一个形状为 s,父对象为 p 的橡皮筋。

默认情况下,矩形橡皮筋(sRectangle)将使用掩码,因此矩形的微小边界才是可见的。某些样式(例如,原生 macOS)会更改这种设置,并调用 setWindowOpacity() 来创建半透明的填充选择矩形。

initStyleOption(option)#
参数:

optionQStyleOptionRubberBand

使用此 QRubberBand 的值来初始化 option。此方法对子类非常有用,当它们需要一个 QStyleOptionRubberBand,但不想自己填写所有信息时。

另请参阅

initFrom()

shape()#
返回类型:

Shape

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