Qt Graphics View Framework 图形视图框架

news/2024/7/4 14:32:31

QT2D绘图我们使用QPainter实现少量绘图是很理想的,但是如果是要绘制大量的2D图形并且需要能够控制管理时就会显得力不从心。

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

 

它包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和 QGraphicsView 视图类。QGraphicsItem是在场景中的图形项,QGraphicsScene相当于容器包含和管理QGraphicsItem。项类通过QGraphicsScene::addItem(),(QGraphicsScene::add*())被加入到SceneQGraphicsView是个视图窗体部件。我们可以将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, -102020));

   // a white semi-transparent foreground

   scene.setBackgroundBrush(Qt::yellow);

   // a grid foreground

   scene.setForegroundBrush(QBrush(Qt::lightGrayQt::CrossPattern));

   return a.exec();

}


官方Example中有许多例子相关的例子,可以查看学习。



http://www.niftyadmin.cn/n/4364472.html

相关文章

如何防止XMLHttpRequest对象传回的中文数据中出现乱码?

如何防止XMLHttpRequest对象传回的中文数据中出现乱码?  在使用AJAX进行网站开发的时候,我们都使用XMLHttpRequest对象来传递数据,由于用户机器使用的操作系统和浏览器使用的默认语言配置可能各不相同,有的用户使用英文配置方案&#xff0c…

Qt SVG Viewer Example 看看看~

Qt提供在widgets和其他paint device上渲染和展示SVG的类,本例就允许用户载入SVG文件并在QGraphicsView上用QGraphicsSvgItem显示它。并且例子还可以选择渲染者,QGraphicsView可以用QWidget或QGLWidget作为视口。也可以使用第三方渲染模型通过QImage。 程…

Rich Text Processing富文本处理

Scribe框架提供一系列读和控制富文本文档的类。Qt4提供像QTextDocument类,他能够为开发提供创建和修改结构的富文本文档。 文档内的信息通过两个补充的接口存取: 1. 基于光标的接口用来编辑。2. 可读的分层接口它提供文档结构的高层次预览。使用前者的优…

Qt Rich Text Example 看看看~

帮助文档中有四个Rich Text的例子:Calendar, Order Form, Syntax High Lighter, Text Object。本博客展示前两个。 Calendar 这个例子很简单,MainWindow类里添加一个QTextBrowser私有对象,并将此对象默认关联的QTextCursor对象进行编辑。添…

分页方案

分页方案 下面的存储过程不仅含有分页方案,还会根据页面传来的参数来确定是否进行数据总数统计。 -- 获取指定页的数据 Create PROCEDURE pagination3 tblName varchar(255), -- 表名 strGetFields varchar(1000) *, -- 需要返回的列 fldName varch…

cocos2d-x动画制作(cocos2d-x2.1)

本博客参考资料:http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d 预备 用到的图片下载 TexturePacker是资源打包器,将资源打包,一起载入到游戏既方便又可以提升性能。 将下载好的图片解压缩&#…

用户控件使用一例

用户控件使用一例 用户控件的简单使用例子,做一个用户登陆的用户控件。用户登陆某个系统是个非常常见的问题,这里笔者想把这样的问题作为一个用户控件来使用,方便各个用户。 1、在工程中新建立一个Web用户控件,此时加入的名称为F…

cocos2d-x按钮菜单(cocos2d-x2.1)

首先看看程序运行时: 程序中有四种菜单项按钮:文本菜单项(stop walk),图字菜单项(Hide Bear),Toggle菜单项(Go Right)以及图片菜单(程序开关&…