QT视图框架

来源:互联网 发布:sql 代表减的符号 编辑:程序博客网 时间:2024/06/03 20:56

1,QGraphicsScene 

QGraphicsItem的容器

属性:1,为管理item提供接口,2,为item传递事件,3,管理item的状态如,selection、focus, 4,绘制

相关函数:

QGraphicsScene::addItem(),

QGraphicsScene::items()

QGraphicsScene::itemAt()

QGraphicsScene::setSelectionArea(),

QGraphicsScene::selectedItems().

QGraphicsScene::setFocusItem()

QGraphicsScene::render()

2,QGraphicsView

提供视口QGraphicsScene 的载体

属性:1一个scene可以对应多个视口,2接收鼠标,键盘的事件传递给scene,3变换矩阵以及和scene间的坐标系变换

相关函数:

QGraphicsView::setViewport().:用于opengl的设定

QGraphicsView::transform(),变换矩阵

QGraphicsView::mapToScene()

QGraphicsView::mapFromScene().

3,QGraphicsItem

属性:1各种鼠标事件,2 键盘输入焦点,按键事件,3 拖拽,4 组合(父子组合,QGraphicsItemGroup),5 碰撞检测

6 与scene的坐标变换,7 内部坐标在坐标变换过程中不受影响,父子不受影响

相关函数:

QGraphicsItem::transform()

QGraphicsItem::contains(),

QGraphicsItem::boundingRect(),

QGraphicsItem::collidesWith()

QGraphicsItem::shape()

 

子类:

QGraphicsRectItem

QGraphicsEllipseItem

QGraphicsTextItem

4,视图系统的类

QAbstractGraphicsShapeItem :path items的基类

QGraphicsAnchor

QGraphicsEffect:图形效果的基类

QGraphicsItemGroup:组合

QGraphicsLayoutItem:普通的item继承这个类就能被layout管理了

QGraphicsObject:基类

QGraphicsProxyWidget:把一个QWidget 嵌入到QGraphicsScene里面时用到的widget

QGraphicsScene

QGraphicsTransform:item变换的抽象基类

QGraphicsView:视口

QGraphicsWidget:基类,QGraphicsScene中的widget

QStyleOptionGraphicsItem:QGraphicsItem的属性

layout:

QGraphicsLayout:layout的基类

QGraphicsAnchorLayout

QGraphicsGridLayout

QGraphicsLinearLayout

item:

QGraphicsItem:item基类

QGraphicsEllipseItem

QGraphicsItemAnimation

QGraphicsLineItem

QGraphicsPathItem

QGraphicsPixmapItem

QGraphicsPolygonItem

QGraphicsRectItem

QGraphicsSimpleTextItem

QGraphicsSvgItem

QGraphicsTextItem

event:

QGraphicsSceneEvent:基类

QGraphicsSceneContextMenuEvent:菜单事件

QGraphicsSceneDragDropEvent

QGraphicsSceneHelpEvent

QGraphicsSceneHoverEvent

QGraphicsSceneMouseEvent

QGraphicsSceneMoveEvent

QGraphicsSceneResizeEvent

QGraphicsSceneWheelEvent

5,坐标系

item:以中心为坐标原点,通过QGraphicsItem::contains()判断鼠标点击是否在item内部,QGraphicsItem::pos()是他爹的坐标

scene:QGraphicsItem::scenePos(), QGraphicsItem::sceneBoundingRect(),QGraphicsScene::changed()刷新

view:正常的坐标

6,坐标映射

QGraphicsView::mapToScene(),QGraphicsScene::itemAt().:检查触发的item

QGraphicsItem::mapToScene(),:确定item在scene的位置QGraphicsView::mapFromScene():确定scene在view的位置

检查圈定区域包含的item传递一个QPainterPath to mapToScene(),然后QGraphicsScene::items().

QGraphicsItem::mapToScene() and QGraphicsItem::mapFromScene().

QGraphicsItem::mapToParent() and QGraphicsItem::mapFromParent()

QGraphicsItem::mapToItem() and QGraphicsItem::mapFromItem()

7,view的特效

QGraphicsView::setMatrix().

见Elastic Nodes这个例子

8,绘制

QGraphicsScene::render()

QGraphicsView::render().

9,拖拽

QGraphicsItem::setAcceptDrops().QGraphicsItem::dragEnterEvent(), QGraphicsItem::dragMoveEvent(), QGraphicsItem::dragLeaveEvent(), QGraphicsItem::dropEvent().

10,光标,工具栏

QGraphicsItem::setCursor(),QGraphicsItem::setToolTip()

11,动画

继承QGraphicsObject,QPropertyAnimation

或者继承QObject and QGraphicsItem加上timer实现QObject::timerEvent().

12,opengl

QGraphicsView view(&scene);

view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));

13,分组

QGraphicsItemGroups

QGraphicsScene::createItemGroup().

14,

原创粉丝点击