QGraphicsScene Class
目录
使用
构造函数
枚举
属性
属性方法
添加项目
事件
信号
槽
使用
头文件: | #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> ®ion);//每当场景中的焦点发生变化时(即某项获得或失去输入焦点,或者当焦点从一个项目传递到另一个项目时),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相关推荐
- qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?
我使用pyqt4.8和python2.7 我创建QGraphicsView并插入QGraphicsScene.比View更大的场景,需要滚动.视图有垂直和水平滚动,但我想通过鼠标中键滚动. 我创建鼠标 ...
- QGraphicsScene 的简单理解--关于手册的简要翻译
文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...
- Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene【补坑】【Qt视图框架补坑】
关于以前的这篇博文,进行补坑 https://blog.csdn.net/qq78442761/article/details/80957186 坑的位置在这,采用上面这篇博文的配法,无法得到图元在场 ...
- Qt工作笔记-QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?
转载地址: https://blog.csdn.net/tianyuan521521/article/details/46290525 前言 最近一直使用QGraphicsView框架在我的一个实际项 ...
- Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene
程序运行截图如下: 程序很简单,有个坑,如下: QGraphicsScene要经过 dragMoveEvent(QGraphicsSceneDragDropEvent *event) 才能触发这个 d ...
- Qt工作笔记-QGraphicsScene练习【Qt图形框架练习】
程序运行如下图所示: 程序结构如下: 代码如下: directitem.h #ifndef DIRECTITEM_H #define DIRECTITEM_H#include <QObject& ...
- Qt学习笔记-基于QGraphicsScene的填词游戏
话不多说,运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <Q ...
- Qt学习笔记-基于QGraphicsScene的打地鼠游戏
运行截图如下: 源码工程下载地址: https://download.csdn.net/download/qq78442761/10366473 这里有几个关键点: 当继承QGraphicsScene ...
- QGraphicsView,QGraphicsScene,QGraphicsItem
参考:Qt4 开发实践第八章 图形视图QGraphicsView #ifndef DRIVEDGRAPH_H #define DRIVEDGRAPH_H#include <QObject> ...
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/117660217 长期持续带来更多项目与技术分享,咨询请 ...
最新文章
- 语言中出现蘌ress_【语言发育迟缓,10大表现不能忽视?】
- keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络
- 华为Mate20首支预告片爆出,30秒内包含太多黑科技
- POJ - 3257 Cow Roller Coaster (背包)
- C语言三目运算符 - C语言零基础入门教程
- 推荐一个 Java 接口快速开发框架,超级nice!
- 中心对称又是轴对称的图形_【笔记-公务员amp;事业单位】行测:图形推理
- a1 抛光等级spi_抛光等级对照表
- 文件分配表(File Allocation Table)入门
- python第三方库:使用Jieba对抓取的数据进行中文分词
- 智能计算之蚁群算法(ACO)介绍
- 基于51单片机智能小车防撞系统系统 代码+protuse仿真
- si4463如何读取RSSI
- SECS/GEM封装库金南瓜平台(一)简介
- 【Docker】 for Mac 配置镜像加速器,加快镜像下载速度
- 完整数学小论文(中文版)LaTeX模板
- 光波传输的角谱理论【理论,实例及matlab代码】
- PSP 2000 USB连接后无法显示记忆棒内容 解决办法
- 真烂!史上最烂项目:骗了几百万欧元,苦撑 12 年,600万行代码
- javaScript的字符串
热门文章
- CentOS下添加Root权限用户(超级用户)方法
- 自动编码器之:去噪自动编码器(DAE)、稀疏自动编码器、变分自动编码器、其他自动编码器
- python中全局变量和局部变量详解
- Python基于PyaotoGUI实现Excel插件XLSTAT偏最小二乘运算(PLSR)的批量操作
- 关于手机Camera的硬件电路知识
- 【javaCV基于虹软人脸识别demo添加电脑摄像头人脸识别(图片保存,视频保存,摄像头显示等 )(附源码)】
- spring security 会话管理
- java socket调用接口_Java中socket接口调用
- Java如何实现的平台无关性的(面试必看)
- 从社会数据到社会智慧的社会计算:新技术、新哲学、新文科