PySide6.QtWidgets.QRubberBand

class QRubberBand

QRubberBand 类提供了一个矩形或线条,可以用来表示选择或边界。更多

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__(s[, p=None])
Parameters:

构造一个形状为s的橡皮筋,父对象为p

默认情况下,矩形橡皮筋(sRectangle)将使用遮罩,因此只有矩形的小边框可见。某些样式(例如,原生 macOS)会改变这一点,并调用 setWindowOpacity() 来创建一个半透明的填充选择矩形。

initStyleOption(option)
Parameters:

选项QStyleOptionRubberBand

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

另请参阅

initFrom()

shape()
Return type:

Shape

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