QGraphicsObject继承自 QObject 和 QGraphicsItem,使用 QObject 的信号/槽和属性机制扩展了 QGraphicsItem。

创建自定义图元时,最重要的是重写 boundingRect() 和 paint函数

创建自定义图元的头文件

#ifndef MYGRAPHICSOBJECT_H
#define MYGRAPHICSOBJECT_H#include <QObject>
#include <QWidget>
#include <QGraphicsItem>
#include <QPainter>
#include <QStyleOptionGraphicsItem>class MyGraphicsObject : public QGraphicsObject
{Q_OBJECT
public:MyGraphicsObject();void SetValue(double _value);protected:QRectF boundingRect() const override;void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;private:QRectF m_rect = QRectF(0, 0, 10, 10);QPainterPath m_path;double m_value;
};#endif // MYGRAPHICSOBJECT_H

创建源文件

#include "mygraphicsobject.h"MyGraphicsObject::MyGraphicsObject() : QGraphicsObject(nullptr)
{}void MyGraphicsObject::SetValue(double _value){m_value = _value;
}QRectF MyGraphicsObject::boundingRect() const
{return m_rect;
}void MyGraphicsObject::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){// 文字painter->setPen(QPen(coler, 1));painter->setBrush(Qt::NoBrush);QFont font("Times", 2);painter->setFont(font);painter->drawText(0, 0, QString::number(m_value, 'f', 2));
}

boundingRect() 函数的返回值是一个QRectF,paint中所绘制的内容,是在这个QRect的局部坐标系中,而非屏幕坐标系。如本例在QRect中的(0,0)点绘制一个数字。

在使用自定义图元时,调用setPos(x, y)函数,其作用为把图元放在屏幕坐标的x,y位置,也就是把那个QRect放在屏幕坐标的x,y位置。

继承QGraphicsObject自定义图元相关推荐

  1. Qt基于QGraphicsObject自定义图元并实现简单的动画

    文章目录 Qt基于QGraphicsObject自定义图元并实现简单的动画 举例; Qt基于QGraphicsObject自定义图元并实现简单的动画 Qt 图形的绘制 可以是QPainter方法直接绘 ...

  2. DeepEarth自定义图元的中心位置纠偏

    DeepEarth为B/S的地图应用开发提供了非常完善的解决方案,对于不熟悉Silverlight的同学来说,在开发中难免遇到各种大大小小的问题,本篇借鉴于最近网上一个朋友给我发邮件提出的问题,详细介 ...

  3. QGraphicsItem图元旋转缩放和自定义图元(三)

    系列文章目录 QGraphicsItem图元的简单使用(一) QGraphicsItem图元拖动绘制(二) 文章目录 系列文章目录 前言 一.缩放和旋转 二.自定义图元 总结 前言 接上一章,图元绘制 ...

  4. android 继承dialog自定义对话框

    android  继承dialog自定义对话框 样式如下: 代码实现: 主要Activity: public class MainActivity extends Activity { Button ...

  5. Node.js: 如何继承 events 自定义事件及触发函数

    events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看) 比如我们常见的 ...

  6. 【Qt】Scene中获取指定类型的自定义图元

    通过阅读 Qt 官方文档中的"Elastic Nodes Example"例子,学习到如何在场景(Scene)中获取某个类型的自定义图元. 官方Demo运行效果: 该文档中,作者自 ...

  7. 201114阶段二qt自定义图元类

    目录 一.学习的知识点 一)自定义视图.场景.图元类 一)1 创建类 一)2 图元类的实现 一)3 advance槽函数 一)3 collidingItems()碰撞检测函数 二.上课没有听懂或者没有 ...

  8. 继承BaseAdapter自定义ListView

    参考的这篇文章:http://android.amberfog.com/?p=296 最关键的点就在于:Android ListView只会创建并保持(在内存中)界面上会显示的items,当发生滚动的 ...

  9. 继承FlexboxLayout自定义可自动换行的tag标签

    实现效果如图: 通过继承自FlexboxLayout实现,Java代码: package org.test;import android.content.Context; import android ...

最新文章

  1. Android 自定义View —— Paint
  2. jpa分页查询_spring data jpa 居然提供了这么多查询方式!
  3. ASP.NET设置数据格式与String.Format使用总结
  4. c语言递归求五阶行列式源代码,久游堂怎么样 -官网
  5. 将一维数组的值逆序输出
  6. halcon算子盘点:Chapter 12:OCR(光字符识别)
  7. WSDM Cup 2020 引用意图识别赛道冠军解决方案(附答辩视频、PPT和代码)
  8. SAP-R3被取代,苏宁采购平台的升级和架构演进之路
  9. 20200827:2020力扣第33周双周赛题解
  10. 疯狂Java实战演义
  11. 多频段压缩参数均衡器:Initial Audio Dynamic EQ Mac
  12. MediaWiki配置
  13. 恢复训练记录20210809
  14. java ready()_Java BufferedReader ready()用法及代码示例
  15. 第十二周项目5-迷宫问题之图深度优先遍历解法
  16. 最新款iPad,真香!!
  17. Exception in thread “main“ java.time.DateTimeException: Unable to extract ZoneId from temporal
  18. npm 安装淘宝镜像报错 npm ERR! code EEXIST
  19. Python:NumPy-随机抽样
  20. 出货系统镜像批量安装方案

热门文章

  1. 怎么把网页添加到公众号里
  2. python计算圆周率近似值_使用python实现计算圆周率π的方法
  3. X509Certificate
  4. 成都工控开发:太简单了!串口触摸屏开发HMI的全流程介绍
  5. Servlet规范之转发请求
  6. unity中打包APP显示手机最顶端的状态栏
  7. 简单说说 Servlet
  8. Python GUI 开发工具
  9. 磁盘挂载报错/dev/sdb1 is apparently in use by the system
  10. 解决无法使用localhost连接数据库,使用服务器IP可以