- class QRubberBand#
QRubberBand类提供了一个矩形或线,可以指示选择区域或边界。更多…
概要#
方法#
def
__init__()
def
shape()
虚方法#
注意
本文档可能包含从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()
使橡皮筋可见;即使橡皮筋不是顶级小部件也是如此。隐藏或销毁小部件将使橡皮筋消失。橡皮筋可以是Rectangle
或Line
(垂直或水平),具体取决于在构造时赋予的shape()
。- class Shape#
此枚举指定
QRubberBand
应具有的形状。这是一条传递给样式系统的绘制提示,可以由每个QStyle
解释。常量
描述
QRubberBand.Line
一个
QRubberBand
可以表示垂直或水平线。几何形状仍然由rect()
提供,并且该线条将在大多数样式上填充给定的几何形状。QRubberBand.Rectangle
QRubberBand
可以表示一个矩形。某些样式会将这解释为填充(通常是半透明)的矩形或矩形的轮廓。
创建一个形状为
s
,父对象为p
的橡皮筋。默认情况下,矩形橡皮筋(
s
为Rectangle
)将使用掩码,因此矩形的微小边界才是可见的。某些样式(例如,原生 macOS)会更改这种设置,并调用setWindowOpacity()
来创建半透明的填充选择矩形。- initStyleOption(option)#
- 参数:
option –
QStyleOptionRubberBand
使用此
QRubberBand
的值来初始化option
。此方法对子类非常有用,当它们需要一个QStyleOptionRubberBand
,但不想自己填写所有信息时。另请参阅
返回此橡皮筋的形状。形状只能在构造时设置。