二十、Qt 2D绘图(十)图形视图框架简介

我们前面用基本的绘图类实现了一个绘图软件,但是,我们无法做出像Word或者Flash中那样,绘制出来的图形可以作为一个元件进行任意变形。我们要想很容易地做出那样的效果,就要使用Qt中的图形视图框架。

The QGraphics View Framework(图形视图框架),在Qt Creator中的帮助里可以查看它的介绍,当然那是英文的,这里有一篇中文的翻译,大家可以看一下:Qt的graphics View框架

如果你的程序中要使用大 量的2D图元,并且想要这些图元都能进行单独或群组的控制,你就要使用这个框架了。比方说像Flash一样的矢量绘图软件,各种游戏软件。但是因为这里涉 及的东西太多了,不可能用一两篇文章就介绍清楚,所以这里我们只是提及一下,让一些刚入门的朋友知道有这样一个可用的框架。

最简单的使用:

The QGraphics View Framework包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和QGraphicsView 视图类。

QGraphicsItem 用来绘制你所要用到的图形,QGraphicsScene 用来包含并管理所有的图元,QGraphicsView 用来显示所有场景。而他们三个都拥有自己各自的坐标系统。我们下面就来建立一个工程,完成一个最简单的例子。

1.新建空的Qt工程:

http://www.yafeilinux.com/wp-content/uploads/2010/04/0119-300x211.jpg

2.更改工程名和存放路径。

http://www.yafeilinux.com/wp-content/uploads/2010/04/0219-300x211.jpg

3.然后新建C++类。

http://www.yafeilinux.com/wp-content/uploads/2010/04/0319-300x212.jpg

4.更改类名为MyItem,基类填写为QGraphicsItem,如下图:

http://www.yafeilinux.com/wp-content/uploads/2010/04/0416-300x221.jpg

5.可以看到新建的类默认已经添加到了工程里。

http://www.yafeilinux.com/wp-content/uploads/2010/04/0516-300x193.jpg

6.新建C++ Source File,更改名字为main.cpp,如下图:

http://www.yafeilinux.com/wp-content/uploads/2010/04/0614-300x228.jpg

7.然后更改各文件的内容。

更改完成后,myitem.h文件内容如下:

http://www.yafeilinux.com/wp-content/uploads/2010/04/0714-300x121.jpg

myitem.cpp文件的内容如下:

http://www.yafeilinux.com/wp-content/uploads/2010/04/0811-300x132.jpg

main.cpp的内容如下:

http://www.yafeilinux.com/wp-content/uploads/2010/04/099-300x170.jpg

运行程序,最终效果如下:

http://www.yafeilinux.com/wp-content/uploads/2010/04/107-300x246.jpg

这里我们只是演示了一下使用这个框架完成最简单的程序的过程,只起到抛砖引玉的作用。

这个框架很复杂,但是功能也很强大,Qt Creator中自带了几个相关的例子(在帮助中查找Graphics View Examples即可),你可以参考一下。因为篇幅问题,我们就只讲这么多,如果以后有机会,我会推出一个相关的专题来讲述这个框架。