您的位置:首页 > 编程语言 > Qt开发

Qt Graphics View Framework 图形视图框架

2013-02-10 17:52 585 查看
QT的2D绘图我们使用QPainter实现少量绘图是很理想的,但是如果是要绘制大量的2D图形并且需要能够控制管理时就会显得力不从心。

好在QT视图体系提供了QGraphics View Framework的框架。使用这个框架可以将各图形项进行单独或分组的控制管理。

它包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和 QGraphicsView 视图类。QGraphicsItem是在场景中的图形项,QGraphicsScene相当于容器包含和管理QGraphicsItem。项类通过QGraphicsScene::addItem(),(QGraphicsScene::add*())被加入到Scene。QGraphicsView是个视图窗体部件。我们可以将scene绑定到view。并且一个scene可以被绑定到多个view中。

QGraphicsScene scene;

myPopulateScene(&scene);

QGraphicsView view(&scene);

view.show();

QGraphicsScene是一个图形项的集合,它包括三层:背景层background layer, 项层item layer 和前景层foreground layer。可以通过重新实现drawBackground() drawForeground() 来控制背景层和前景层。

这个体系使用三种不同的坐标系统——项坐标,场景坐标和视口坐标(Item coordinates, scene coordinates, and view coordinates.)。



下面看一个简单的例子具体如何使用:

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QGraphicsScene scene;

QGraphicsView view(&scene);

view.show();

// add a rectangle item

scene.addRect(QRectF(-10, -10, 20, 20));

// a white semi-transparent foreground

scene.setBackgroundBrush(Qt::yellow);

// a grid foreground

scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

return a.exec();

}



官方Example中有许多例子相关的例子,可以查看学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: