【Qt学习】 场景 视图 图元

目录

一:Graphics View框架

二:场景 视图 图元 案例实操

三:场景 视图 图元 的基本概念


一:Graphics View框架

Graphics View框架主要特点

1. Graphics View框架结构中可以利用QT绘图系统的反锯齿、OpenGL(硬件加速)工具改善绘图性能

2. Graphics View框架支持事件传播体系结构,使场景内的图元交互能力提高一倍

    图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动          QWItget

3.在Graphics View框架中通过二元空间划分树,提供快速的图元查找,这样能实时的显示大场景

Graphics View框架结构如下

二:场景 视图 图元 案例实操

main.cpp 

#include "widget.h"
#include <QApplication>
#include"indexwin.h"
#include<QGraphicsScene>   //场景
#include<QGraphicsRectItem>//图元
#include<QGraphicsView>    //视图

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//  IndexWin w;
//  w.show();

    QGraphicsScene *scene = new QGraphicsScene; //场景
    QGraphicsRectItem *item = new QGraphicsRectItem(100,100,50,50);//矩形项
    QGraphicsLineItem *item1 = new QGraphicsLineItem(10,10,50,50); //直线项
    scene->addItem(item);//项添加到场景
    scene->addItem(item1);
    QGraphicsView *view = new QGraphicsView;//视图
    view->setScene(scene);//视图关联场景
    view->show();         //显示视图

    return a.exec();
}

三:场景 视图 图元 的基本概念

场景【QGraphicsScene】

 QGraphicsScene类为管理大量的2D图形item提供了一个管理界面,做为item的容器,它配合使用QGraphicsView使用来观察items,例如线,矩形,文本或者自定义的items 

注意:QGraphicsScene场景没有自己可见的外观,他只管理items,需要创建一个QGraphicsView Widget来让场景可见

视图【QGraphicsView】

QGraphicsView提供一个显示QGraphicsScene内容的窗口,在构造时候把场景对象作为参数,或者之后使用setScene()来设置view的场景,该框架还包含一个事件传递机制,允许画布和画布上的图元之间精确地双向交互

图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动

实例1 

QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();

 实例2

QGraphicsView view;
QGraphicsScene scene;
Scene. setSceneRect();
View. setScene(scene);

//虚函数void resizeEvent(QResizeEvent *event);

场景坐标系统和视图坐标

图元【QGraphicsItem】

QGraphicsItem类是视图框架的一部分,是在一个QGraphicsScene中最基本的图形类,它为绘制你自己的item提供了一个轻量级的窗口,包括声明item的位置,碰撞检测,绘制重载和item之间的相互作用通过事件处理

图元QGraphicsItem的系统派生

自己派生图元QGraphicsItem 

写自己的item图形,首先应该继承QGraphicsItem,然后重写他的两个纯虚公共函数,boundingRect()和paint(),

第一个函数返回绘制item大概的区域,第二个函数用来绘制item内容

图元QGraphicsItem 坐标系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chenruhan_QAQ_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值