目录

使用

构造函数

枚举

属性

属性方法

添加项目

事件

信号


使用

头文件: #include <QGraphicsScene>
配置: QT += widgets
初始版本: Qt 4.2
基类: QObject

构造函数

//使用(x,y)指定的矩形以及其场景矩形的给定宽度和高度,构造一个QGraphicsScene对象。父参数传递给QObject的构造函数。
QGraphicsScene::QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr);
QGraphicsScene::QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr);//构造一个QGraphicsScene对象。父参数传递给QObject的构造函数。
QGraphicsScene::QGraphicsScene(QObject *parent = nullptr)

枚举

    enum ItemIndexMethod {BspTreeIndex,//将应用二进制空间分区树。通过使用二进制搜索,所有QGraphicsScene的项目定位算法的数量级都接近对数复杂度。添加,移动和删除项目是对数的。此方法最适合静态场景(即大多数项目不移动的场景)。NoIndex = -1//没有索引被应用。物品的位置具有线性复杂性,因为会搜索场景中的所有物品。但是,添加,移动和删除项目是在固定时间内完成的。这种方法是动态场景的理想选择,在动态场景中,连续添加,移动或删除许多项目。};enum SceneLayer {ItemLayer = 0x1,//项目层。 QGraphicsScene通过调用虚拟函数drawItems()来渲染所有项目在该层中。项目层绘制在背景层之后,但在前景层之前。BackgroundLayer = 0x2,//背景层。 QGraphicsScene通过调用虚拟函数drawBackground()在此层中渲染场景的背景。首先绘制背景层。ForegroundLayer = 0x4,//前景层。 QGraphicsScene通过调用虚拟函数drawForeground()在此层中渲染场景的前景。前景层绘制在所有层的最后。AllLayers = 0xffff//所有层;该值代表所有三层的组合。};

属性

qreal height() const;//返回场景高度
qreal width() const;//返回场景宽度
bool hasFocus() const;//返回场景是否具有焦点
void clearFocus();//从场景中清除焦点
QList<QGraphicsView*> views() const;//返回显示该场景的所有视图的列表
QGraphicsItem *QGraphicsScene::focusItem() const;//返回具有焦点的项目,没有则返回nullptr
QList<QGraphicsItem*> collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const;//返回与项目碰撞的所有项目的列表
QGraphicsItemGroup* createItemGroup(const QList<QGraphicsItem *> &items);//将项目中的所有项目分组到新的QGraphicsItemGroup中,并返回指向该组的指针。
void destroyItemGroup(QGraphicsItemGroup *group);//从场景中删除组

属性方法

QStyle* style() const;//获取场景的样式
void    setStyle(QStyle *style);//设置场景的样式QBrush foregroundBrush() const;//获取前景色
void    setForegroundBrush(const QBrush &brush);//设置前景色QBrush   backgroundBrush() const;//获取背景画刷
void    setBackgroundBrush(const QBrush &brush);//设置背景画刷ItemIndexMethod itemIndexMethod() const;//获取项目索引方法
void    setItemIndexMethod(QGraphicsScene::ItemIndexMethod method);//设置项目索引方法int    bspTreeDepth() const;//获取QGraphicsScene的BSP索引树的深度
void    setBspTreeDepth(int depth);//设置QGraphicsScene的BSP索引树的深度qreal    minimumRenderSize() const;//获取必须绘制的最小视图转换尺寸
void    setMinimumRenderSize(qreal minSize);//设置必须绘制的最小视图转换尺寸bool   focusOnTouch() const;//获取接收触摸开始事件时项目是否获得焦点
void    setFocusOnTouch(bool enabled);//设置接收触摸开始事件时项目是否获得焦点QGraphicsItem* focusItem() const;//将场景的焦点项设置为item
void    setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason);//返回场景的当前焦点项QPalette palette() const;//获取场景的默认调色板
void    setPalette(const QPalette &palette);//设置场景的默认调色板QRectF  sceneRect() const;//获取场景矩形;场景的边界矩形
void    setSceneRect(const QRectF &rect);//设置场景矩形;场景的边界矩形
void    setSceneRect(qreal x, qreal y, qreal w, qreal h);//设置场景矩形;场景的边界矩形bool    stickyFocus() const;//获取单击场景背景是否可以清除焦点
void    setStickyFocus(bool enabled);//设置单击场景背景是否可以清除焦点QGraphicsItem* activePanel() const;//返回当前活动的面板,如果当前没有活动的面板,则返回nullptr
void    setActivePanel(QGraphicsItem *item);//设置活动面板QGraphicsWidget* activeWindow() const;//返回当前活动窗口,如果当前没有活动窗口,则返回nullptr
void    setActiveWindow(QGraphicsWidget *widget);//设置活动窗口QPainterPath selectionArea() const;//返回先前使用setSelectionArea()设置的选择区域
//将选择区域设置为路径
void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform);
void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform());
void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform());
void clearSelection();//清空路径

添加项目

//Item
void addItem(QGraphicsItem *item);
//Ellipse
QGraphicsEllipseItem* addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush());
QGraphicsEllipseItem* addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush());
//Line
QGraphicsLineItem* addLine(const QLineF &line, const QPen &pen = QPen());
QGraphicsLineItem* addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen());
//Pat
QGraphicsPathItem* addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush());
//Pixmap
QGraphicsPixmapItem* addPixmap(const QPixmap &pixmap);
//Polygon
QGraphicsPolygonItem* addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush());
//Rect
QGraphicsRectItem* addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush());
QGraphicsRectItem* addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush());
//SimpleTextItem
QGraphicsSimpleTextItem* addSimpleText(const QString &text, const QFont &font = QFont());
//TextItem
QGraphicsTextItem* addText(const QString &text, const QFont &font = QFont());
//ProxyWidget
QGraphicsProxyWidget* addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags());

事件

bool event(QEvent *event);
bool eventFilter(QObject *watched, QEvent *event);
//拖拽事件
void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
void dropEvent(QGraphicsSceneDragDropEvent *event);
//绘制事件
void drawBackground(QPainter *painter, const QRectF &rect);
void drawForeground(QPainter *painter, const QRectF &rect);
//焦点事件
void focusOutEvent(QFocusEvent *focusEvent);
void focusInEvent(QFocusEvent *focusEvent);
//帮助事件
void helpEvent(QGraphicsSceneHelpEvent *helpEvent);
//输入事件
void inputMethodEvent(QInputMethodEvent *event);
QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
//键鼠事件
void keyPressEvent(QKeyEvent *keyEvent);
void keyReleaseEvent(QKeyEvent *keyEvent);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
void wheelEvent(QGraphicsSceneWheelEvent *wheelEvent);

信号

//如果场景内容发生更改,当控件到达事件循环时,此信号由QGraphicsScene发出。 region参数包含一个场景矩形列表,这些矩形指示已更改的区域
void changed(const QList<QRectF> &region);//每当场景中的焦点发生变化时(即某项获得或失去输入焦点,或者当焦点从一个项目传递到另一个项目时),QGraphicsScene就会发出此信号
void focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason);//每当场景矩形发生变化时,此信号就会由QGraphicsScene发出
void sceneRectChanged(const QRectF &rect);//每当场景选择发生变化时,此信号就会由QGraphicsScene发出
void selectionChanged();

void advance();
void clear();//删除所有项目
void clearSelection();//删除选中项目
void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = AllLayers);//使场景中的rect无效并计划其重绘。图层中的所有缓存内容都会无条件无效并重新绘制
void update(const QRectF &rect = QRectF());//计划重新绘制场景中的rect

QGraphicsScene Class相关推荐

  1. qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?

    我使用pyqt4.8和python2.7 我创建QGraphicsView并插入QGraphicsScene.比View更大的场景,需要滚动.视图有垂直和水平滚动,但我想通过鼠标中键滚动. 我创建鼠标 ...

  2. QGraphicsScene 的简单理解--关于手册的简要翻译

    文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...

  3. Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene【补坑】【Qt视图框架补坑】

    关于以前的这篇博文,进行补坑 https://blog.csdn.net/qq78442761/article/details/80957186 坑的位置在这,采用上面这篇博文的配法,无法得到图元在场 ...

  4. Qt工作笔记-QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?

    转载地址: https://blog.csdn.net/tianyuan521521/article/details/46290525 前言 最近一直使用QGraphicsView框架在我的一个实际项 ...

  5. Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene

    程序运行截图如下: 程序很简单,有个坑,如下: QGraphicsScene要经过 dragMoveEvent(QGraphicsSceneDragDropEvent *event) 才能触发这个 d ...

  6. Qt工作笔记-QGraphicsScene练习【Qt图形框架练习】

    程序运行如下图所示: 程序结构如下: 代码如下: directitem.h #ifndef DIRECTITEM_H #define DIRECTITEM_H#include <QObject& ...

  7. Qt学习笔记-基于QGraphicsScene的填词游戏

    话不多说,运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <Q ...

  8. Qt学习笔记-基于QGraphicsScene的打地鼠游戏

    运行截图如下: 源码工程下载地址: https://download.csdn.net/download/qq78442761/10366473 这里有几个关键点: 当继承QGraphicsScene ...

  9. QGraphicsView,QGraphicsScene,QGraphicsItem

    参考:Qt4 开发实践第八章 图形视图QGraphicsView #ifndef DRIVEDGRAPH_H #define DRIVEDGRAPH_H#include <QObject> ...

  10. Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/117660217 长期持续带来更多项目与技术分享,咨询请 ...

最新文章

  1. 语言中出现蘌ress_【语言发育迟缓,10大表现不能忽视?】
  2. keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络
  3. 华为Mate20首支预告片爆出,30秒内包含太多黑科技
  4. POJ - 3257 Cow Roller Coaster (背包)
  5. C语言三目运算符 - C语言零基础入门教程
  6. 推荐一个 Java 接口快速开发框架,超级nice!
  7. 中心对称又是轴对称的图形_【笔记-公务员amp;事业单位】行测:图形推理
  8. a1 抛光等级spi_抛光等级对照表
  9. 文件分配表(File Allocation Table)入门
  10. python第三方库:使用Jieba对抓取的数据进行中文分词
  11. 智能计算之蚁群算法(ACO)介绍
  12. 基于51单片机智能小车防撞系统系统 代码+protuse仿真
  13. si4463如何读取RSSI
  14. SECS/GEM封装库金南瓜平台(一)简介
  15. 【Docker】 for Mac 配置镜像加速器,加快镜像下载速度
  16. 完整数学小论文(中文版)LaTeX模板
  17. 光波传输的角谱理论【理论,实例及matlab代码】
  18. PSP 2000 USB连接后无法显示记忆棒内容 解决办法
  19. 真烂!史上最烂项目:骗了几百万欧元,苦撑 12 年,600万行代码
  20. javaScript的字符串

热门文章

  1. CentOS下添加Root权限用户(超级用户)方法
  2. 自动编码器之:去噪自动编码器(DAE)、稀疏自动编码器、变分自动编码器、其他自动编码器
  3. python中全局变量和局部变量详解
  4. Python基于PyaotoGUI实现Excel插件XLSTAT偏最小二乘运算(PLSR)的批量操作
  5. 关于手机Camera的硬件电路知识
  6. 【javaCV基于虹软人脸识别demo添加电脑摄像头人脸识别(图片保存,视频保存,摄像头显示等 )(附源码)】
  7. spring security 会话管理
  8. java socket调用接口_Java中socket接口调用
  9. Java如何实现的平台无关性的(面试必看)
  10. 从社会数据到社会智慧的社会计算:新技术、新哲学、新文科