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

Qt Graphics View Framework 图形视图框架

2016-03-24 21:19 531 查看
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中有许多例子相关的例子,可以查看学习。

FROM:  http://blog.csdn.net/xuguangsoft/article/details/8578042
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: