【QT学习】Graphics View框架(基础篇)- 图元、场景、视图

  • 📢欢迎各位读者:点赞 👍 收藏 ⭐留言 📝
  • 📢博客主页:https://blog.csdn.net/qq_59134387😀
  • 📢原创不易,转载请标明出处;如有错误,敬请指正批评!💦
  • 📢我不去想是否能够成功,既然选择了远方,便只顾风雨兼程!✨


前言

   在日常生活中,存在着许许多多的娱乐游戏。其中,大部分的游戏场景都是基于Graphics View框架,通过图元、场景、视图进行绘制和操控。
   以拳皇97这款游戏为例,视图就是游戏窗口,场景就是游戏背景,图元就是游戏角色。我们在游戏过程中,通过选择游戏角色(图元)、游戏背景(场景),将游戏角色(图元)加载到游戏背景(场景)中进行操作,最后通过游戏窗口(视图)显示出来。


一、图元(QGraphicsItem)

   图元(游戏角色),是组成图像的基本单元。我们经常通过引用头文件QGraphicsItem来创建图元,为方便我们绘制基本图像单元,QT Creator软件对QGraphicsItem类进行派生,如下表格所示:

派生类实现目标
QGraphicsLineItem提供了一个直线项
QGraphicsPixmapItem提供了一个图像项
QGraphicsRectItem提供了一个矩形项
QGraphicsEllipseItem提供了一个椭圆项
QGraphicsPathItem提供了一个路径项
QGraphicsPolygonItem提供了一个多边形项
QGraphicsTextItem提供了一个格式化的文本项
QGraphicsSimpleTextItem提供了一个简单的文本标签项

二、场景(QGraphicsScene)

   场景(游戏背景),可视为一个图元容器用来管理创建出的大量的图元item。我们经常通过引用头文件QGraphicsScene来创建场景,并使用类中addItem(QGraphicsItem *item)方法将图元添加到场景中。特别注意:QGraphicsScene创建的场景没有自己可见的外观,只负责用来管理创建的图元item,需要配合QGraphicsView创建的视图对场景中的图元进行可视化。

三、视图(QGraphicsView)

   视图(游戏窗口),为QGraphicsScene内容提供一个显示的窗口,在构造时候把场景对象作为参数,或者创建后使用setScene()来设置view的场景。QGraphicsView继承了QWidget类,使其具有窗口类的一切方法。

四、简单应用——在窗口中绘制矩形

这是在QT Creator中,通过图元、场景、视图的组合运用,在QGraphicsView窗口中绘制一个矩形item。

1.完整代码

#include <QApplication>
#include <QGraphicsItem>    	//图元类头文件
#include <QGraphicsScene> 	 	//场景类头文件
#include <QGraphicsView>    	//视图类头文件
#include <QGraphicsRectItem>    //矩形图元类头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 	
 	//创建视图
    QGraphicsView *view = new QGraphicsView();
    //创建场景,属性x,y,w,h分别为0,0,600,600
    QGraphicsScene *scene = new QGraphicsScene(0,0,600,600);
    //创建图元,属性x,y,w,h分别为100,100,300,300
    QGraphicsRectItem *item = new QGraphicsRectItem(100,100,300,300);
    //将图元添加到场景中
    scene->addItem(item);
    //将场景添加到视图中
    view->setScene(scene);
   	//视图显示 
   	view->show();
   	
    return a.exec();
}

2.实现效果

在这里插入图片描述


总结

   以上就是Graphics View框架(基础篇):图元、场景和视图的介绍,以及三者组合绘制一个矩形图元的简单应用。后续还有Graphics View框架(进阶篇):派生QGraphicsItem类创建自定义图元item
   原创不易,转载请标明出处,希望大家阅读后都能有所收获!若文章出现有误之处,欢迎读者留言指正批评!

在这里插入图片描述

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孤生i

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值