Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QGraphicsScene Class Reference
[QtGui module]

在QGraphicsScene类提供了用于管理大量的2D图形项的表面上。More...

继承QObject

Types

Methods

Qt Signals


Detailed Description

在QGraphicsScene类提供了用于管理大量的2D图形项的表面上。

这个类作为一个容器QGraphicsItems 。它是连同用于QGraphicsView用于可视化的二维表面的图形化的项目,如直线,矩形,文字,甚至是自定义项目。 QGraphicsScene是部分Graphics View Framework

QGraphicsScene还提供以下功能,可以让你有效地确定项目的两个位置,以及确定哪些项目是在现场的任意区域内可见。与QGraphicsView窗口小部件,你可以想像整个场景,或放大,查看现场的唯一部分。

例如:

 QGraphicsScene scene;
 scene.addText("Hello, world!");

 QGraphicsView view(&scene);
 view.show();

注意, QGraphicsScene都有自己的无视觉外观,它只管理项目。你需要创建一个QGraphicsView小工具,可视化的场景。

将项目添加到一个场景,你通过构建一个QGraphicsScene对象开始。那么,你有两个选择:要么加入您现有的QGraphicsItem通过调用对象addItem( ) ,或者您也可以拨打方便的功能之一addEllipse( )addLine( )addPath( )addPixmap( )addPolygon( )addRect() ,或addText(),它都返回一个指向新添加的项目。具有这些功能的添加物品的尺寸是相对于项目的坐标系,并在项目位置在场景初始化为( 0,0) 。

然后,您可以使用可视化的场景QGraphicsView。当场景变化时, (例如,当一个项目移动或变换) QGraphicsScene放出changed()信号。要删除某个项目,调用removeItem( ) 。

QGraphicsScene使用一个索引算法能够有效地管理项目的位置。默认情况下,一个BSP (二进制空间划分)树被使用;适用于大场景中的大部分项目保持静态(即不走动)的算法。您可以选择通过调用禁用此指数setItemIndexMethod( ) 。有关可用的索引算法的详细信息,请参阅itemIndexMethod属性。

场景的边界矩形是通过调用设置setSceneRect( ) 。件可以被放置在现场的任何位置,并且场景的大小是由默认无限制。现场RECT仅用于内部簿记,维护现场的项目索引。如果场景RECT没有设置, QGraphicsScene将使用所有项目的边界区域,通过返回itemsBoundingRect( ) ,作为场景正确。但是,itemsBoundingRect( )是一个比较耗时的功能,因为它的运作通过收集位置信息用于现场每一个项目。正因为如此,你应该对大场面的操作时,总是设置场景正确。

其中一个QGraphicsScene最大的优势是它能够有效地确定项目的位置。即使是数以百万计在现场的项目中,items( )函数可以几毫秒内确定一个项目的位置。有几个重载items(): 1 ,发现件在某一位置, 1 ,发现里面或具有多边形或矩形相交,并且多个项目。返回的项目列表是通过堆叠顺序排列,最上面的项目是列表中的第一项进行排序。为方便起见,也有一个itemAt( )函数返回在给定位置的最上方项目。

QGraphicsScene保持选择信息的场景。要选择项目,请致电setSelectionArea( ) ,并清除当前的选择,通话clearSelection( ) 。通话selectedItems()来获取所有选定的项目清单。

Event Handling and Propagation

该QGraphicsScene有另一个责任,就是从事件传播QGraphicsView。发送事件到场景中,你构建一个继承的事件QEvent,然后使用,例如发送,QApplication.sendEvent( ) 。event( )负责调度事件的个别项目。一些常见的事件被方便的事件处理程序来处理。例如,按键事件被处理keyPressEvent( ) ,和鼠标按下事件被处理mousePressEvent( ) 。

关键事件被传递到focus item。将焦点设置项,您可以调用setFocusItem( ) ,传递,接受集中的项目,或项目本身可以调用QGraphicsItem.setFocus( ) 。通话focusItem( )来获得当前焦点项目。对于小部件的相容性,现场还维护它自己的重点信息。默认情况下,现场没有焦点,所有的关键事件将被丢弃。如果setFocus()被调用,或者在现场获得焦点的项目,现场自动获得焦点。如果场景有焦点,hasFocus( )将返回True ,而关键事件将被转发到的重点项目,如果有的话。如果场景失去焦点, (即有人呼叫clearFocus( ) ),而一个项目具有焦点,现场将维持其项目重点信息,一旦现场重新获得焦点时,它会确保最后的重点项目重新获得焦点。

对于鼠标悬停效果, QGraphicsScene调度hover events。如果一个项目接受悬停事件(见QGraphicsItem.acceptHoverEvents( ) ) ,它会收到一个GraphicsSceneHoverEnter当鼠标进入其区域的事件。当鼠标移动继续该项目的区域内, QGraphicsScene将发送它GraphicsSceneHoverMove事件。当鼠标离开该项目的区域,该项目将获得GraphicsSceneHoverLeave事件。

所有的鼠标事件被传递到当前mouse grabber项目。项目成为现场的鼠标抓取,如果它接受鼠标事件(见QGraphicsItem.acceptedMouseButtons( ) ),它接收鼠标按下。它保持鼠标采集卡,直到它收到一个鼠标释放时,没有其他的鼠标按钮被按下。您可以致电mouseGrabberItem( ) ,以确定哪些项目目前正在抓住鼠标。


Type Documentation

QGraphicsScene.ItemIndexMethod

这个枚举变量描述了索引算法QGraphicsScene为管理有关现场项目位置信息。

Constant Value Description
QGraphicsScene.BspTreeIndex 0 一个二进制空间划分树被应用。所有QGraphicsScene的项目定位算法是一种为了接近对数的复杂性,通过使用二进制搜索。添加,移动和删除的项目是对数。这种方法最适合于静态场景(即场景中的大部分项目不动) 。
QGraphicsScene.NoIndex -1 没有索引被应用。项目位置的线性复杂度,因为在现场的所有项目进行搜索。添加,移动和删除的项目,然而,在常数时间内完成。这种方法非常适合于动态场景,许多项目被添加,移动或删除连续。

See also setItemIndexMethod()和bspTreeDepth

QGraphicsScene.SceneLayer

这个枚举变量描述了一个渲染层QGraphicsScene。何时QGraphicsScene绘制的场景内容,它使得每一层分开,为了。

每一层代表可调用的功能,如当被OR'ed在一起的标志invalidate()或QGraphicsView.invalidateScene( ) 。

Constant Value Description
QGraphicsScene.ItemLayer 0x1 该项目层。QGraphicsScene渲染所有的项目都在这一层通过调用虚函数drawItems( ) 。该项目层绘制背景层之后,但在此之前的前景层。
QGraphicsScene.BackgroundLayer 0x2 背景层。QGraphicsScene通过调用虚函数渲染场景的背景在这一层drawBackground( ) 。背景层首先所有图层的绘制。
QGraphicsScene.ForegroundLayer 0x4 前景层。QGraphicsScene通过调用虚函数呈现在这一层场景的前景drawForeground( ) 。前景层被最后绘制所有层。
QGraphicsScene.AllLayers 0xffff 所有的层,这个值表示所有三个层的结合。

这个枚举被引入或修改的Qt 4.3 。

该SceneLayers类型是一个typedef为QFlags\u003cSceneLayer\u003e 。它存储SceneLayer值的或组合。

See also invalidate()和QGraphicsView.invalidateScene( ) 。


Method Documentation

QGraphicsScene.__init__ (self, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个QGraphicsScene对象。该parent参数被传递到QObject的构造。

QGraphicsScene.__init__ (self, QRectF sceneRect, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个QGraphicsScene对象,使用sceneRect其场景区域。该parent参数被传递到QObject的构造。

See also sceneRect

QGraphicsScene.__init__ (self, float x, float y, float width, float height, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个QGraphicsSceneObject,使用(指定的矩形xy) ,并在给定widthheight其场景区域。该parent参数被传递到QObject的构造。

See also sceneRect

QGraphicsItem QGraphicsScene.activePanel (self)

返回当前的面板,或者0 ,如果没有面板是目前活跃。

此功能被引入Qt的4.6 。

See also QGraphicsScene.setActivePanel( ) 。

QGraphicsWidget QGraphicsScene.activeWindow (self)

返回当前活动窗口,或者0,如果没有窗口当前处于活动状态。

此功能被引入Qt的4.4 。

See also QGraphicsScene.setActiveWindow( ) 。

QGraphicsEllipseItem QGraphicsScene.addEllipse (self, QRectF rect, QPen pen = QPen(), QBrush brush = QBrush())

创建并添加一个椭圆项目现场,并返回该项的指针。椭圆的几何形状被定义为rect,其笔和刷子被初始化为penbrush

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addLine( )addPath( )addPixmap( )addRect( )addText( )addItem()和addWidget( ) 。

QGraphicsEllipseItem QGraphicsScene.addEllipse (self, float x, float y, float w, float h, QPen pen = QPen(), QBrush brush = QBrush())

这个方便的功能等同于调用addEllipse (QRectFxywh) ,penbrush) 。

此功能被引入Qt的4.3 。

QGraphicsScene.addItem (self, QGraphicsItem item)

item说法有它的所有权转移给Qt的。

添加或移动item和所有的童装到了这一幕。这一幕发生的所有权item

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

如果该项目已经在不同的场景,它会首先从它的旧场景去掉,然后加入到这一场景的顶层。

QGraphicsScene将发送ItemSceneChange通知item而它被添加到场景中。如果项目目前并不属于一个场景,只有一个发送通知。如果它不属于现场已经(即,它被移动到了这一幕) ,QGraphicsScene作为该项目是由它的前一个场景中删除将发送另外通知。

如果该项目是一个面板,场面活跃,而且没有活动面板中的场景,那么该项目将被激活。

See also removeItem( )addEllipse( )addLine( )addPath( )addPixmap( )addRect( )addText( )addWidget()和Sorting

QGraphicsLineItem QGraphicsScene.addLine (self, QLineF line, QPen pen = QPen())

创建并增加了一个行项目现场,并返回该项的指针。线的几何形状被定义为line,其笔被初始化为pen

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addPath( )addPixmap( )addRect( )addText( )addItem()和addWidget( ) 。

QGraphicsLineItem QGraphicsScene.addLine (self, float x1, float y1, float x2, float y2, QPen pen = QPen())

这个方便的功能等同于调用addLine (QLineFx1y1x2y2) ,pen) 。

此功能被引入Qt的4.3 。

QGraphicsPathItem QGraphicsScene.addPath (self, QPainterPath path, QPen pen = QPen(), QBrush brush = QBrush())

创建并添加一个路径项目现场,并返回该项的指针。的路径的几何形状被定义为path,其笔和刷子被初始化为penbrush

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPixmap( )addRect( )addText( )addItem()和addWidget( ) 。

QGraphicsPixmapItem QGraphicsScene.addPixmap (self, QPixmap pixmap)

创建并增加了一个图片项目现场,并返回该项的指针。像素图被定义为pixmap

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPath( )addRect( )addText( )addItem()和addWidget( ) 。

QGraphicsPolygonItem QGraphicsScene.addPolygon (self, QPolygonF polygon, QPen pen = QPen(), QBrush brush = QBrush())

创建并增加了一个多边形项目现场,并返回该项的指针。多边形被定义为polygon,其笔和刷子被初始化为penbrush

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPath( )addRect( )addText( )addItem()和addWidget( ) 。

QGraphicsRectItem QGraphicsScene.addRect (self, QRectF rect, QPen pen = QPen(), QBrush brush = QBrush())

创建并添加一个矩形项目现场,并返回该项的指针。矩形的几何形状被定义为rect,其笔和刷子被初始化为penbrush

注意,该产品的几何形状在产品的坐标提供,并且它的位置被初始化为( 0,0) 。例如,如果一个QRect(50, 50 ,100,100 )被添加,其左上角将在(50 ,50)相对于原点的物品的坐标系。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPixmap( )addPixmap( )addText( )addItem()和addWidget( ) 。

QGraphicsRectItem QGraphicsScene.addRect (self, float x, float y, float w, float h, QPen pen = QPen(), QBrush brush = QBrush())

这个方便的功能等同于调用addRect (QRectFxywh) ,penbrush) 。

此功能被引入Qt的4.3 。

QGraphicsSimpleTextItem QGraphicsScene.addSimpleText (self, QString text, QFont font = QFont())

创建并增加了一个QGraphicsSimpleTextItem到了现场,并返回该项的指针。文本字符串被初始化为text和其字体被初始化为font

该项目的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPixmap( )addPixmap( )addRect( )addItem()和addWidget( ) 。

QGraphicsTextItem QGraphicsScene.addText (self, QString text, QFont font = QFont())

创建并添加一个文本项目现场,并返回该项的指针。文本字符串被初始化为text和其字体被初始化为font

该项目的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

See also addEllipse( )addLine( )addPixmap( )addPixmap( )addRect( )addItem()和addWidget( ) 。

QGraphicsProxyWidget QGraphicsScene.addWidget (self, QWidget widget, Qt.WindowFlags flags = 0)

widget说法有它的所有权转移给Qt的。

创建一个新的QGraphicsProxyWidgetwidget,将其添加到场景中,并返回一个指针到代理。wFlags设置默认的窗口标志嵌入代理部件。

该项目的位置被初始化为( 0,0) 。

如果该项目是可见的(即,QGraphicsItem.isVisible( )返回True ) ,QGraphicsScene会发出changed( )一旦控制返回到事件循环。

需要注意的是小部件与Qt.WA_PaintOnScreen小部件的属性设置和不支持的小工具,包装外部应用程序或控制器。例子是QGLWidgetQAxWidget

See also addEllipse( )addLine( )addPixmap( )addPixmap( )addRect( )addText( )addSimpleText()和addItem( ) 。

QGraphicsScene.advance (self)

这种方法也是一个Qt槽与C + +的签名void advance()

这个插槽advances现场一步,通过调用QGraphicsItem.advance()用于在现场的所有项目。这样做是在两个阶段:在第一阶段,所有的项目都通知到场即将改变,而在第二阶段的所有项目都通知他们可以移动。在第一阶段,QGraphicsItem.advance()被调用传递0值作为参数,并且1被传递到第二阶段。

See also QGraphicsItem.advance( )QGraphicsItemAnimationQTimeLine

QBrush QGraphicsScene.backgroundBrush (self)

int QGraphicsScene.bspTreeDepth (self)

QGraphicsScene.clear (self)

这种方法也是一个Qt槽与C + +的签名void clear()

删除,并删除所有项目从场景,但其他原因而离开现场的不变的状态。

此功能被引入Qt的4.4 。

See also addItem( ) 。

QGraphicsScene.clearFocus (self)

从现场清除焦点。如果有任何项目具有焦点时,这个函数被调用时,它会失去焦点,并再次重新获得焦点,一旦现场重新获得焦点。

不具有焦点场景忽略的关键事件。

See also hasFocus( )setFocus()和setFocusItem( ) 。

QGraphicsScene.clearSelection (self)

清除当前的选择。

See also setSelectionArea()和selectedItems( ) 。

list-of-QGraphicsItem QGraphicsScene.collidingItems (self, QGraphicsItem item, Qt.ItemSelectionMode mode = Qt.IntersectsItemShape)

返回与碰撞的所有项目的列表item。碰撞是通过调用确定QGraphicsItem.collidesWithItem();碰撞检测是通过测定mode。默认情况下,所有的项目,其形状相交item或者是包含内部item的形状返回。

该项目以递减顺序堆叠(即,在列表中的第一个项目是最上面的项目,最后项目是最下面的项目)返回。

See also items( )itemAt( )QGraphicsItem.collidesWithItem()和Sorting

QGraphicsScene.contextMenuEvent (self, QGraphicsSceneContextMenuEvent event)

此事件处理程序,对于事件contextMenuEvent,可重新实现在子类中获得上下文菜单事件。默认实现转发的事件接受上下文菜单事件的事件的位置的最上方项目。如果没有任何项目接受上下文菜单事件在这个位置上,​​事件被忽略。

See also QGraphicsItem.contextMenuEvent( ) 。

QGraphicsItemGroup QGraphicsScene.createItemGroup (self, list-of-QGraphicsItem items)

items说法有它的所有权转移给Qt的。

组中的所有项目items成一个新的QGraphicsItemGroup,并返回一个指针到组。该组与共同祖先创造items作为其父,并与位置(0 ,0)。该项目全部重设父到组,以及它们的位置和转换映射到该组。如果items是空的,这个函数会返回一个空的顶层QGraphicsItemGroup

QGraphicsScene有团体项目的所有权,你不需要删除它。拆除(取消组合)一组,呼destroyItemGroup( ) 。

See also destroyItemGroup()和QGraphicsItemGroup.addToGroup( ) 。

QGraphicsScene.destroyItemGroup (self, QGraphicsItemGroup group)

group说法有它的所有权转移给Qt的。

Reparents中的所有项目groupgroup的父项,然后删除group从现场,终于将其删除。该项目的位置和转换是从组映射到集团母公司。

See also createItemGroup()和QGraphicsItemGroup.removeFromGroup( ) 。

QGraphicsScene.dragEnterEvent (self, QGraphicsSceneDragDropEvent event)

此事件处理程序,对于事件event,可重新实现在子类中接收拖动进入事件现场。

默认实现接受事件并准备现场接受拖动移动事件。

See also QGraphicsItem.dragEnterEvent( )dragMoveEvent( )dragLeaveEvent()和dropEvent( ) 。

QGraphicsScene.dragLeaveEvent (self, QGraphicsSceneDragDropEvent event)

此事件处理程序,对于事件event,可重新实现在子类中接收拖动离开事件现场。

See also QGraphicsItem.dragLeaveEvent( )dragEnterEvent( )dragMoveEvent()和dropEvent( ) 。

QGraphicsScene.dragMoveEvent (self, QGraphicsSceneDragDropEvent event)

此事件处理程序,对于事件event,可重新实现在子类中接收拖放移动事件现场。

See also QGraphicsItem.dragMoveEvent( )dragEnterEvent( )dragLeaveEvent()和dropEvent( ) 。

QGraphicsScene.drawBackground (self, QPainter painter, QRectF rect)

绘制的场景采用背景painter之前,任何产品和前景绘制。重新实现此功能提供了自定义背景的场景。

所有的绘制是在做scene坐标。该rect参数是暴露的矩形。

如果你想要的是定义一个颜色,纹理或渐变的背景,你可以调用setBackgroundBrush( )来代替。

See also drawForeground()和drawItems( ) 。

QGraphicsScene.drawForeground (self, QPainter painter, QRectF rect)

绘制场景的使用前景painter,背景和所有项目后已经制定。重新实现这个函数提供一个自定义前景的场景。

所有的绘制是在做scene坐标。该rect参数是暴露的矩形。

如果你想要的是定义一个颜色,纹理或渐变的前景,你可以调用setForegroundBrush( )来代替。

See also drawBackground()和drawItems( ) 。

QGraphicsScene.drawItems (self, QPainter painter, list-of-QGraphicsItem items, list-of-QStyleOptionGraphicsItem options, QWidget widget = None)

QGraphicsScene.dropEvent (self, QGraphicsSceneDragDropEvent event)

此事件处理程序,对于事件event,可重新实现在子类中接收拖放事件的现场。

See also QGraphicsItem.dropEvent( )dragEnterEvent( )dragMoveEvent()和dragLeaveEvent( ) 。

bool QGraphicsScene.event (self, QEvent event)

从重新实现QObject.event( ) 。

处理事件event,并分派到相应的事件处理程序。

除了调用方便的事件处理程序,这个功能是负责将鼠标移动事件悬停事件时,没有鼠标采集项目。悬停事件直接交付给项目,没有方便的功能他们。

不像QWidgetQGraphicsScene不具备的便利功能enterEvent()leaveEvent()。使用此功能来获得这些事件来代替。

See also contextMenuEvent( )keyPressEvent( )keyReleaseEvent( )mousePressEvent( )mouseMoveEvent( )mouseReleaseEvent( )mouseDoubleClickEvent( )focusInEvent()和focusOutEvent( ) 。

bool QGraphicsScene.eventFilter (self, QObject watched, QEvent event)

从重新实现QObject.eventFilter( ) 。

QGraphicsScene filters QApplication的事件,以检测调色板和字体的变化。

QGraphicsScene.focusInEvent (self, QFocusEvent event)

此事件处理程序,对于事件focusEvent,可重新实现在子类中要获得焦点的事件。

默认实现将焦点设置在现场,然后在最后一个重点项目。

See also QGraphicsItem.focusOutEvent( ) 。

QGraphicsItem QGraphicsScene.focusItem (self)

当现场被激活,该函数返回现场目前的重点项目,或者0,如果没有项目目前具有焦点。当场景是无效的,这个函数返回将获得输入焦点时的情景被激活的项目。

重点项目接收键盘输入的时候,现场收到一个关键事件。

See also setFocusItem( )QGraphicsItem.hasFocus()和isActive( ) 。

bool QGraphicsScene.focusNextPrevChild (self, bool next)

发现一个新的widget ,让键盘焦点,以适合Tab和Shift + Tab键,如果能找到一个新的widget返回True ,否则返回FALSE ,如果它不能。如果next诚然,这个函数向前搜索,如果next是假的,它向后搜索。

您可以在子类中重新实现这个功能QGraphicsScene提供细粒度地控制标籤焦点传递你的场景里面。默认的实现是基于定义的选项卡焦点链QGraphicsWidget.setTabOrder( ) 。

此功能被引入Qt的4.4 。

QGraphicsScene.focusOutEvent (self, QFocusEvent event)

此事件处理程序,对于事件focusEvent,可重新实现在子类中获得了焦点事件。

默认实现消除重点从任何重点项目,然后从现场移除焦点。

See also QGraphicsItem.focusInEvent( ) 。

QFont QGraphicsScene.font (self)

QBrush QGraphicsScene.foregroundBrush (self)

bool QGraphicsScene.hasFocus (self)

返回True如果现场有焦点,否则返回False 。如果场景有焦点,它将会把关键事件从QKeyEvent到具有焦点的任何项目。

See also setFocus()和setFocusItem( ) 。

float QGraphicsScene.height (self)

这个方便的功能等同于调用sceneRect().height()

See also width( ) 。

QGraphicsScene.helpEvent (self, QGraphicsSceneHelpEvent event)

此事件处理程序,对于事件helpEvent,可重新实现在子类中接受帮助的事件。该事件的类型为QEvent.ToolTip,这在工具提示要求创建。

默认实现显示的最上方项目,即具有最高z值的项目,在鼠标光标位置的工具提示。如果没有项目有一个工具提示集,这个函数什么都不做。

See also QGraphicsItem.toolTip()和QGraphicsSceneHelpEvent

QGraphicsScene.inputMethodEvent (self, QInputMethodEvent event)

此事件处理程序,对于事件event,可重新实现在子类来接收输入法事件的现场。

默认实现转发事件到focusItem( ) 。如果没有项目目前已经集中或者当前焦点项目不接受输入法,这个函数不执行任何操作。

See also QGraphicsItem.inputMethodEvent( ) 。

QVariant QGraphicsScene.inputMethodQuery (self, Qt.InputMethodQuery query)

此方法用于通过输入法来查询一组场景的属性,能够支持复杂的输入法操作为周围的文字和reconversions支持。

query参数指定了属性进行查询。

See also QWidget.inputMethodQuery( ) 。

QGraphicsScene.invalidate (self, QRectF rect = QRectF(), SceneLayers layers = QGraphicsScene.AllLayers)

这种方法也是一个Qt槽与C + +的签名void invalidate(const QRectF& = QRectF(),QGraphicsScene::SceneLayers = QGraphicsScene.AllLayers)

废止及时间表的重绘layersrect在现场。在任何缓存的内容layers无条件失效并重新绘制。

您可以使用此函数重载通知QGraphicsScene的改变,背景或场景的前景。这个函数是常用的场景与基于区块的背景来通知改变时QGraphicsView已启用CacheBackground

例如:

 QRectF TileScene.rectForTile(int x, int y) const
 {
     // Return the rectangle for the tile at position (x, y).
     return QRectF(x * tileWidth, y * tileHeight, tileWidth, tileHeight);
 }

 void TileScene.setTile(int x, int y, const QPixmap &pixmap)
 {
     // Sets or replaces the tile at position (x, y) with pixmap.
     if (x >= 0 && x < numTilesH && y >= 0 && y < numTilesV) {
         tiles[y][x] = pixmap;
         invalidate(rectForTile(x, y), BackgroundLayer);
     }
 }

 void TileScene.drawBackground(QPainter *painter, const QRectF &exposed)
 {
     // Draws all tiles that intersect the exposed area.
     for (int y = 0; y < numTilesV; ++y) {
         for (int x = 0; x < numTilesH; ++x) {
             QRectF rect = rectForTile(x, y);
             if (exposed.intersects(rect))
                 painter->drawPixmap(rect.topLeft(), tiles[y][x]);
         }
     }
 }

需要注意的是QGraphicsView目前支持后台缓存只(见QGraphicsView.CacheBackground) 。此功能相当于调用update( )如有层,但BackgroundLayer被传递。

See also QGraphicsView.resetCachedContent( ) 。

QGraphicsScene.invalidate (self, float x, float y, float w, float h, SceneLayers layers = QGraphicsScene.AllLayers)

这是一个重载函数。

这个方便的功能等同于调用无效(QRectFxywh) ,layers) ;

此功能被引入Qt的4.3 。

bool QGraphicsScene.isActive (self)

返回True如果场景是活跃的(如,它是由至少一个观察QGraphicsView这是积极的),否则返回False 。

此功能被引入Qt的4.6 。

See also QGraphicsItem.isActive()和QWidget.isActiveWindow( ) 。

bool QGraphicsScene.isSortCacheEnabled (self)

QGraphicsItem QGraphicsScene.itemAt (self, QPointF pos)

返回指定最顶端可见项目position,或者0,如果有在这个位置没有任何项目。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also items( )collidingItems()和Sorting

QGraphicsItem QGraphicsScene.itemAt (self, float x, float y)

QGraphicsItem QGraphicsScene.itemAt (self, QPointF pos, QTransform deviceTransform)

这是一个重载函数。

返回时由(指定的位置的最上方项目xy) ,或者0,如果有在这个位置没有任何项目。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

这个方便的功能等同于调用itemAt(QPointF(x, y), deviceTransform)

此功能被引入Qt的4.6 。

QGraphicsItem QGraphicsScene.itemAt (self, float x, float y, QTransform deviceTransform)

ItemIndexMethod QGraphicsScene.itemIndexMethod (self)

list-of-QGraphicsItem QGraphicsScene.items (self)

按降序返回堆叠顺序的场景中所有项目的列表。

See also addItem( )removeItem()和Sorting

list-of-QGraphicsItem QGraphicsScene.items (self, Qt.SortOrder order)

返回现场的所有项目的有序列表。order决定堆叠顺序。

See also addItem( )removeItem()和Sorting

list-of-QGraphicsItem QGraphicsScene.items (self, QPointF pos)

回报,这取决于所有可见项目mode,是在指定的pos在列表中使用排序order

为默认值mode is Qt.IntersectsItemShape;所有项目的确切形状与相交pos返回。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also itemAt()和Sorting

list-of-QGraphicsItem QGraphicsScene.items (self, QPointF pos, Qt.ItemSelectionMode mode, Qt.SortOrder order, QTransform deviceTransform = QTransform())

list-of-QGraphicsItem QGraphicsScene.items (self, QRectF rectangle, Qt.ItemSelectionMode mode = Qt.IntersectsItemShape)

list-of-QGraphicsItem QGraphicsScene.items (self, QRectF rect, Qt.ItemSelectionMode mode, Qt.SortOrder order, QTransform deviceTransform = QTransform())

list-of-QGraphicsItem QGraphicsScene.items (self, QPolygonF polygon, Qt.ItemSelectionMode mode = Qt.IntersectsItemShape)

这是一个重载函数。

回报,这取决于所有可见项目mode,是内部或相交由定义的矩形xywh,在列表中使用排序order

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

list-of-QGraphicsItem QGraphicsScene.items (self, QPolygonF polygon, Qt.ItemSelectionMode mode, Qt.SortOrder order, QTransform deviceTransform = QTransform())

list-of-QGraphicsItem QGraphicsScene.items (self, QPainterPath path, Qt.ItemSelectionMode mode = Qt.IntersectsItemShape)

list-of-QGraphicsItem QGraphicsScene.items (self, QPainterPath path, Qt.ItemSelectionMode mode, Qt.SortOrder order, QTransform deviceTransform = QTransform())

这是一个重载函数。

回报,这取决于所有可见项目mode,是内部或相交与指定rect并返回一个列表排序的使用order

为默认值mode is Qt.IntersectsItemShape;所有项目的确切形状相交或包含由rect返回。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also itemAt()和Sorting

list-of-QGraphicsItem QGraphicsScene.items (self, float x, float y, float w, float h, Qt.ItemSelectionMode mode = Qt.IntersectsItemShape)

这是一个重载函数。

回报,这取决于所有可见项目mode,是内部或相交与指定polygon并返回一个列表排序的使用order

为默认值mode is Qt.IntersectsItemShape;所有项目的确切形状相交或包含由polygon返回。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also itemAt()和Sorting

list-of-QGraphicsItem QGraphicsScene.items (self, float x, float y, float w, float h, Qt.ItemSelectionMode mode, Qt.SortOrder order, QTransform deviceTransform = QTransform())

这是一个重载函数。

回报,这取决于所有可见项目mode,是内部或相交与指定path并返回一个列表排序的使用order

为默认值mode is Qt.IntersectsItemShape;所有项目的确切形状相交或包含由path返回。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also itemAt() and Sorting.

QRectF QGraphicsScene.itemsBoundingRect (self)

计算并返回现场所有项目的边界矩形。此功能通过遍历所有项目,并且因为如果这一点,它可能会很慢的大场面。

See also sceneRect( ) 。

QGraphicsScene.keyPressEvent (self, QKeyEvent event)

此事件处理程序,对于事件keyEvent,可重新实现在子类来接收按键事件。默认实现转发事件到当前的重点项目。

See also QGraphicsItem.keyPressEvent()和focusItem( ) 。

QGraphicsScene.keyReleaseEvent (self, QKeyEvent event)

此事件处理程序,对于事件keyEvent,可重新实现在子类中接收键释放事件。默认实现转发事件到当前的重点项目。

See also QGraphicsItem.keyReleaseEvent()和focusItem( ) 。

QGraphicsScene.mouseDoubleClickEvent (self, QGraphicsSceneMouseEvent event)

此事件处理程序,对于事件mouseEvent,可重新实现在子类中接收鼠标双击事件现场。

如果有人在现场doubleclicks ,现场将先收到一个鼠标按下事件,随后释放事件(即点击) ,然后双击事件,终于释放事件。如果双击事件被传递到不同的项目比收到的第一个记者一个和释放,这将作为一个新闻事件。然而, tripleclick事件不传递在这种情况下双击事件。

默认的实现是类似mousePressEvent( ) 。

See also QGraphicsItem.mousePressEvent( )QGraphicsItem.mouseMoveEvent( )QGraphicsItem.mouseReleaseEvent()和QGraphicsItem.setAcceptedMouseButtons( ) 。

QGraphicsItem QGraphicsScene.mouseGrabberItem (self)

返回当前鼠标抓取物品,或者0,如果没有项目目前正在抓住鼠标。鼠标采集卡产品接收发送到场景中的所有鼠标事件的项目。

一个项目变成了鼠标抓取,当它收到并接受鼠标按下事件,它保持鼠标采集卡,直到以下事件发生:

如果该项目失去了它的鼠标抢,现场将忽略所有的鼠标事件,直到一个新的项目抓起鼠标(即,直到一个新的项目接收鼠标按下事件) 。

QGraphicsScene.mouseMoveEvent (self, QGraphicsSceneMouseEvent event)

此事件处理程序,对于事件mouseEvent,可重新实现在子类中接收鼠标移动事件的现场。

默认的实现依赖于鼠标抓取状态。如果有一个鼠标采集项目时,事件被发送给小鼠采集。如果有接受悬停事件在当前位置的任何物品,该事件被转化成一个悬停事件和接受,否则它忽略。

See also QGraphicsItem.mousePressEvent( )QGraphicsItem.mouseReleaseEvent( )QGraphicsItem.mouseDoubleClickEvent()和QGraphicsItem.setAcceptedMouseButtons( ) 。

QGraphicsScene.mousePressEvent (self, QGraphicsSceneMouseEvent event)

此事件处理程序,对于事件mouseEvent,可重新实现在子类中接收鼠标按下事件现场。

默认的实现依赖于场景的状态。如果有一个鼠标采集卡产品,然后该事件被发送给小鼠采集。否则,它被转发到接受鼠标事件从事件现场位置的最上方项目,而该项目迅速成为鼠标抓取物品。

如果没有项目在现场给定的位置,选择区域被重置,所有重点项目失去了输入焦点,而该事件随后被忽略。

See also QGraphicsItem.mousePressEvent()和QGraphicsItem.setAcceptedMouseButtons( ) 。

QGraphicsScene.mouseReleaseEvent (self, QGraphicsSceneMouseEvent event)

此事件处理程序,对于事件mouseEvent,可重新实现在子类中接收鼠标释放事件的现场。

默认的实现依赖于鼠标抓取状态。如果没有鼠标采集卡,该事件将被忽略。否则,如果有一个鼠标采集项目时,事件被发送给小鼠采集。如果这个鼠标释放代表鼠标上的最后按下按钮,鼠标采集项目,然后失去鼠标抢。

See also QGraphicsItem.mousePressEvent( )QGraphicsItem.mouseMoveEvent( )QGraphicsItem.mouseDoubleClickEvent()和QGraphicsItem.setAcceptedMouseButtons( ) 。

QPalette QGraphicsScene.palette (self)

QGraphicsScene.removeItem (self, QGraphicsItem item)

item争论

删除的项目item而从现场的所有儿童。所有权item被传递给调用者(即QGraphicsScene将不再删除item销毁时) 。

See also addItem( ) 。

QGraphicsScene.render (self, QPainter painter, QRectF target = QRectF(), QRectF source = QRectF(), Qt.AspectRatioMode mode = Qt.KeepAspectRatio)

呈现source从现场到RECTtarget,使用painter。此功能可用于捕捉场景的内容到一个绘图设备,如一个有用的QImage(例如,采取截图) ,或与印刷QPrinter。例如:

 QGraphicsScene scene;
 scene.addItem(...
 ...
 QPrinter printer(QPrinter.HighResolution);
 printer.setPaperSize(QPrinter.A4);

 QPainter painter(&printer);
 scene.render(&painter);

If source是一个空矩形,该函数将使用sceneRect()来确定要呈现什么。如果target是一个空矩形,的尺寸painter的绘图设备将被使用。

矩形内容源将根据待转化aspectRatioMode以适应目标矩形。默认情况下,纵横比蒙了,source缩放以适合target

See also QGraphicsView.render( ) 。

QRectF QGraphicsScene.sceneRect (self)

list-of-QGraphicsItem QGraphicsScene.selectedItems (self)

将返回所有当前选定项的列表。该项目在没有特定的顺序返回。

See also setSelectionArea( ) 。

QPainterPath QGraphicsScene.selectionArea (self)

返回先前设置的选择区域setSelectionArea( ) ,或空QPainterPath如果没有选择区域已设置。

See also setSelectionArea( ) 。

bool QGraphicsScene.sendEvent (self, QGraphicsItem item, QEvent event)

发送事件eventitem可以通过事件过滤器。

只有当项目被勾选的情况下被发送。

Returns false如果事件已被过滤或如果该项目被禁用。否则返回从事件处理程序返回的值。

此功能被引入Qt的4.6 。

See also QGraphicsItem.sceneEvent()和QGraphicsItem.sceneEventFilter( ) 。

QGraphicsScene.setActivePanel (self, QGraphicsItem item)

激活item,它必须是在这个场景中的项目。您也可以通过0item在这种情况下QGraphicsScene将停用任何当前活动面板。

如果场景是目前处于非活动状态,item保持非活动状态,直到现场被激活(或IRitem为0 ,没有任何产品将被激活) 。

此功能被引入Qt的4.6 。

See also activePanel( )isActive()和QGraphicsItem.isActive( ) 。

QGraphicsScene.setActiveWindow (self, QGraphicsWidget widget)

激活widget,它必须是在这个场景中的小部件。您也可以通过0widget在这种情况下QGraphicsScene将停用任何当前活动窗口。

此功能被引入Qt的4.4 。

See also activeWindow()和QGraphicsWidget.isActiveWindow( ) 。

QGraphicsScene.setBackgroundBrush (self, QBrush brush)

QGraphicsScene.setBspTreeDepth (self, int depth)

QGraphicsScene.setFocus (self, Qt.FocusReason focusReason = Qt.OtherFocusReason)

将焦点设置在现场通过发送QFocusEvent到了现场,经过focusReason作为原因。如果场景早先失去它,而一个项目具有焦点后重新获得焦点,最后的重点项目将获得焦点与focusReason作为原因。

如果场景已经成为焦点,此函数什么都不做。

See also hasFocus( )clearFocus()和setFocusItem( ) 。

QGraphicsScene.setFocusItem (self, QGraphicsItem item, Qt.FocusReason focusReason = Qt.OtherFocusReason)

设置场景的重点项目item,重点原因focusReason,从可能有焦点以往任何物品取出后焦点。

If item是0 ,或者如果它要么不接受焦点(即,它不具有QGraphicsItem.ItemIsFocusable标志启用) ,或者是不可见的或不启用,该功能只删除焦点由以往任何focusitem 。

如果产品不为0 ,场面目前没有焦点(即,hasFocus( )返回False ) ,这个函数会调用setFocus(自动) 。

See also focusItem( )hasFocus()和setFocus( ) 。

QGraphicsScene.setFont (self, QFont font)

QGraphicsScene.setForegroundBrush (self, QBrush brush)

QGraphicsScene.setItemIndexMethod (self, ItemIndexMethod method)

QGraphicsScene.setPalette (self, QPalette palette)

QGraphicsScene.setSceneRect (self, QRectF rect)

QGraphicsScene.setSceneRect (self, float x, float y, float w, float h)

QGraphicsScene.setSelectionArea (self, QPainterPath path, QTransform deviceTransform)

设置选择区域path。在此区域内的所有项目会立即选中,所有项目外均为Unselected 。你可以通过调用获取所有选定的项目清单selectedItems( ) 。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

为一个项目被选中,它必须被标记为selectableQGraphicsItem.ItemIsSelectable) 。

此功能被引入Qt的4.6 。

See also clearSelection()和selectionArea( ) 。

QGraphicsScene.setSelectionArea (self, QPainterPath path)

QGraphicsScene.setSelectionArea (self, QPainterPath path, Qt.ItemSelectionMode)

QGraphicsScene.setSelectionArea (self, QPainterPath path, Qt.ItemSelectionMode mode, QTransform deviceTransform)

这是一个重载函数。

设置选择区域path using mode以确定数据项都包含在选择的区域。

deviceTransform是适用于该视图,​​并且需要如果场景中包含忽略的转换项目提供了转型。

此功能被引入Qt的4.6 。

See also clearSelection()和selectionArea( ) 。

QGraphicsScene.setSortCacheEnabled (self, bool enabled)

QGraphicsScene.setStickyFocus (self, bool enabled)

QGraphicsScene.setStyle (self, QStyle style)

style说法有它的所有权转移给Qt的。

设置或替换场景的风格style和reparents的风格了这一幕。任何先前分配的风格被删除。场景的风格默认为QApplication.style( ) ,并作为默认为全部QGraphicsWidget场景中的项目。

改变风格,无论是直接通过调用调用这个函数,或间接QApplication.setStyle( ) ,会自动更新样式场景中的所有部件没有明确分配给他们的风格。

If style为0时,QGraphicsScene将恢复到QApplication.style( ) 。

此功能被引入Qt的4.4 。

See also style( ) 。

bool QGraphicsScene.stickyFocus (self)

QStyle QGraphicsScene.style (self)

返回场景的风格,还是一样QApplication.style( )如果场景没有被明确指定的样式。

此功能被引入Qt的4.4 。

See also setStyle( ) 。

QGraphicsScene.update (self, QRectF rect = QRectF())

这种方法也是一个Qt槽与C + +的签名void update(const QRectF& = QRectF())

调度区域的重绘rect在现场。

See also sceneRect()和changed( ) 。

QGraphicsScene.update (self, float x, float y, float w, float h)

这是一个重载函数。

此功能相当于调用update (QRectFxywh));

此功能被引入Qt的4.3 。

list-of-QGraphicsView QGraphicsScene.views (self)

返回的所有显示这一幕的视图的列表。

See also QGraphicsView.scene( ) 。

QGraphicsScene.wheelEvent (self, QGraphicsSceneWheelEvent event)

此事件处理程序,对于事件wheelEvent,可重新实现在子类中接收鼠标滚轮事件的现场。

默认情况下,该事件被光标下传递到最上面的可见项目。如果置之不理,事件传播到项目之下,并再次,直到事件被接受,或到达现场。如果没有任何项目接受的情况下,它会被忽略。

See also QGraphicsItem.wheelEvent( ) 。

float QGraphicsScene.width (self)

这个方便的功能等同于调用sceneRect( ) ,宽( ) 。

See also height( ) 。


Qt Signal Documentation

void changed (const QList<QRectF>&)

这是该信号的默认超载。

这个信号是由发射QGraphicsScene当控制到达事件循环,如果场景内容的变化。该region参数包含场景的矩形,表明已经改变了该地区的名单。

See also QGraphicsView.updateScene( ) 。

void sceneRectChanged (const QRectF&)

这是该信号的默认超载。

这个信号是由发射QGraphicsScene每当现场RECT变化。该rect参数是新场景的矩形。

See also QGraphicsView.updateSceneRect( ) 。

void selectionChanged ()

这是该信号的默认超载。

这个信号是由发射QGraphicsScene只要选择发生改变。您可以致电selectedItems()来获取选定项的新列表。

当一个项目被选中或取消选择,一个选择区域设置,清除或以其他方式改变时,如果预先选择的项目被添加到场景中,或者如果选择的项目是从场景中删除的选择改变。

QGraphicsScene为组选择操作发出这个信号只有一次。例如,如果你设置一个选择区域,选择或取消选择QGraphicsItemGroup,或者如果您添加或从场景中删除包含多个选定项目的SelectionChanged ( )是(每个项目,而不是一次)发出只有一次操作完成后,一个父项。

此功能被引入Qt的4.3 。

See also setSelectionArea( )selectedItems()和QGraphicsItem.setSelected( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5