Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)

本文介绍了Qt中的QGraphicsView组件,用于显示QGraphicsScene内容的可滚动视口。QGraphicsScene则负责管理二维图形项,但本身无视觉表现,需通过QGraphicsView进行可视化。文章提供了相关类的简介及完整源码。
摘要由CSDN通过智能技术生成
效果

在这里插入图片描述

相关类介绍

     QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。

     QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视觉外观;它只管理项目。需要创建一个QGraphicsView小部件来可视化场景。

完整源码
#include <QApplication>

Qt QGraphicsView是一个框架,用于在Qt应用程序中创建交互式2D图形界面。它提供了一个容器,用于显示和编辑Qt QGraphicsItem的场景,Qt QGraphicsItem是可以在场景中绘制图元。QGraphicsItem是QGraphicsView的一个子类,它表示场景中的一个可视化的对象。可以使用QGraphicsView创建自定义图元。 以下是创建自定义图元的基本步骤: 1.创建一个自定义类,该类继承自QGraphicsItem。 2.实现paint()函数,该函数用于在场景中绘制图元。 3.实现boundingRect()函数,该函数用于确定图元的边界框。 4.实现shape()函数,该函数用于定义图元的形状。 5.将自定义图元添加到场景中。 以下是一个简单的自定义图元的例子: ```c++ class MyItem : public QGraphicsItem { public: MyItem(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); QPainterPath shape() const; }; MyItem::MyItem() { setFlag(ItemIsMovable); } QRectF MyItem::boundingRect() const { return QRectF(-10, -10, 20, 20); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->setPen(Qt::NoPen); painter->setBrush(Qt::red); painter->drawEllipse(-10, -10, 20, 20); } QPainterPath MyItem::shape() const { QPainterPath path; path.addEllipse(-10, -10, 20, 20); return path; } ``` 在主函数中,创建场景和视图,并将自定义图元添加到场景中: ```c++ int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene; QGraphicsView view(&scene); MyItem *item = new MyItem; scene.addItem(item); view.show(); return a.exec(); } ``` 这将创建一个红色的圆形图元,可以拖动它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值