零基础开始QT绘图(5)

上一篇,我们学会了如何在GraphicView上绘制GraphicItem,看起来效果和在Painter上绘制的没什么差别,今天我一起来看看他们的差别。我们在上一篇代码的基础上加上几句简单的设置,看看效果。

一、让图形动起来

#include "mywidget.h"
#include "ui_mywidget.h"

myWidget::myWidget(QWidget *parent) :QWidget(parent),
    ui(new Ui::myWidget)
{
    ui->setupUi(this);

    scene=new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);
    QGraphicsRectItem * rect=new QGraphicsRectItem(QRect(20,20,this->width()/2,this->height()/2));
    QGraphicsTextItem *item = new QGraphicsTextItem("GraphicView running here!");
    //设置矩形可以被移动和被选择
    rect->setFlag(QGraphicsItem::ItemIsMovable);
    rect->setFlag(QGraphicsItem::ItemIsSelectable);
   
       scene->addItem(rect);
       scene->addItem(item);
}

myWidget::~myWidget()
{
    delete ui;
}

没有加SetFlag前的运行效果如下:
零基础开始QT绘图(5)
增加之后,很明显这个矩形是可以被鼠标选中,成虚线状态,而且可以被移动,当移动的大于边界线就会出现滚动条:
零基础开始QT绘图(5)
当然,这些都是固化了的GraphicItem。其实我们在编写游戏或者组态软件的时候更多的是需要有个性的GraphicItem,那么下面我们就来自己编写一个自定义的GraphicItem,来实现我们个性化的“梦想”。

二、定义自己的GraphicItem
首先我们在QT中添加一个类,让它集成自GraphicItem: