Qt工作笔记-使用QGraphicsItem绘制复杂的图形
程序运行截图如下:
原理:使用QPainter一个部分,一个部分的画
源码:
mygraphicsitem.h
#ifndef MYGRAPHICSITEM_H
#define MYGRAPHICSITEM_H#include <QGraphicsItem>class MyGraphicsItem:public QGraphicsItem
{
public:MyGraphicsItem(QGraphicsItem *parent=0);~MyGraphicsItem();protected:QRectF boundingRect()const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
};#endif // MYGRAPHICSITEM_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
class QGraphicsScene;namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QGraphicsScene *m_scene;
};#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
mygraphicsitem.cpp
#include "mygraphicsitem.h"
#include <QPainter>
#include <QPen>
#include <QRectF>MyGraphicsItem::MyGraphicsItem(QGraphicsItem *parent):QGraphicsItem(parent)
{setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
}MyGraphicsItem::~MyGraphicsItem()
{}QRectF MyGraphicsItem::boundingRect() const
{return QRectF(-14,-50,55,70);
}void MyGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{Q_UNUSED(option)Q_UNUSED(widget)painter->setPen(QPen(Qt::white,1));painter->drawRect(-14,-50,55,70);painter->setPen(QPen(Qt::red,2));painter->drawLine(0,0,0,10);painter->drawLine(0,10,30,10);painter->drawLine(30,10,30,0);painter->drawLine(15,10,15,-20);painter->drawLine(15,-20,0,-20);QRectF rectangle(0,-33,30,30);int startAngle=-180*16;int spanAngle=270*16;painter->drawArc(rectangle, startAngle, spanAngle);painter->drawLine(15,-35,15,-40);
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "mygraphicsitem.h"
#include <QGraphicsScene>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_scene=new QGraphicsScene;ui->graphicsView->setScene(m_scene);ui->graphicsView->setRenderHint(QPainter::Antialiasing);m_scene->setBackgroundBrush(QBrush(Qt::black));MyGraphicsItem *item=new MyGraphicsItem;item->setPos(0,0);m_scene->addItem(item);
}Widget::~Widget()
{delete ui;
}
Qt工作笔记-使用QGraphicsItem绘制复杂的图形相关推荐
- Qt工作笔记-使用QGraphicsItem加载图片并实现碰撞
因为要做一个游戏,在线只是一个知识点例子,作下笔记而已.只给出伪代码,游戏作玩,开源发布!!! 这里有2个知识点 一个是QGraphicsItem的绘图. 一个是QGraphicsItem的碰撞. 实 ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- 【Qt】2D绘图之绘制简单的图形
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制图形 04. 画笔和画刷 05. 绘制弧线 06. 附录 01. 概述 Qt中提供了强大的2D绘图系统,可以使用同一A ...
- Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene
程序运行截图如下: 程序很简单,有个坑,如下: QGraphicsScene要经过 dragMoveEvent(QGraphicsSceneDragDropEvent *event) 才能触发这个 d ...
- Qt工作笔记-绘制静态折线图
话不多说,程序运行截图如下: 程序结构图如下: 这里要注意一点: 要把QWidget提升为QChartView 并且在工程文件加上 Qt+=charts 代码如下: widget.h #ifndef ...
- C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...
- Qt工作笔记-在Graphics上写文本(QGraphicsSimpleTextItem与QGraphicsTextItem的基本使用)
查了下文档发现就这2个, 一个是QGraphicsTextItem,另外一个是QGraphicsSimpleTextItem 从官方对QGraphicsTextItem中的描述中可以看到: 这个QGr ...
- Qt工作笔记-3D效果唤出QWidgets界面(QGraphicsProxyWidget与QTimeLine)
程序运行截图如下: 关键点一: ->:这个箭头表示左边的类是放到右边的类里面的 QWidget->QGraphicsProxyWidget QGraphicsProxyWidget-> ...
- Qt工作笔记-Qt元对象系统解析【2合1】
博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...
最新文章
- Android studio自定义变量
- win10 本地升级和系统覆盖更新教程
- postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...
- HTML设置允许冒泡,html css hover也会冒泡
- 如何让梯形变成平行四边形_开放的课堂 创新的天地——平行四边形的面积教学片段与反思...
- linux dev sda1 满了,/dev/sda1把磁盘几乎都满了,我该怎么办呢??
- win7登录密码破解工具
- go语言的安装、环境变量配置及简单使用
- 微信小程序等第三方应用接入易班的api
- 32强鹏城逐战!“共筑梦想、创赢未来” 2021年绿色产业创新创业大赛深圳赛区比赛精彩上演
- 北斗导航公共服务平台首次落户四川
- hotmail邮箱在Outlooknbsp;2010中…
- MemoryCache缓存
- 再探Struts框架
- cube station下载_cube station魔方软件下载
- 王者荣耀坦克位思路和上分必读知识
- 彩信下载不了怎么回事?
- MySQL建员工表案例
- 在一个国家仅有1分,2分,5分硬币,将n(n=5)分钱兑换成硬币有很多种兑法。请你编程序计算出10分钱共有多少种兑法,并列出每种兑换方式。
- 为什么跑完步了膝盖会疼痛?