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