当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>Qt学习之路(30):Graphics View Framework</b>[VC/C++编程]

赞助商链接



  本文“<b>Qt学习之路(30):Graphics View Framework</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

目前基本上也已经到了2D画图部份的尾声,所谓重头戏都是在最后压轴的,目前我们就要来看看在画图部份功效最强盛的Graphics View.我们常常说KDE桌面,新版本的KDE桌面就是成立在Graphics View的底子之上,可见其强盛之处.

Qt的白皮书里面这样写道:“Qt Graphics View 供应了用于管理和交互大量定制的 2D 图形对象的平面以及可视化显示对象的视图 widget,并支持缩放和旋转功效.Graphics View 利用 BSP(二进制空间划分)树形可非常快速地找到对象,因此即便是包含百万个对象的大型场景,也能及时图形化显示.”

Graphics View是一个基于item的M-V架构的框架.

基于item意思是,它的每一个组件都是一个item.这是与QPainter的状况机差别.回想一下,利用QPainter画图多是采取一种面向历程的描写方法,首先利用drawLine()画一条直线,然后利用drawPolygon()画一个多边形;而关于Graphics View来说,相同的历程可以是,首先成立一个场景scene,然后成立一个line对象和一个polygon对象,再利用scene的add()函数将 line和polygon增添到scene,最后通过视口view便可以看到了.乍看起来,后者仿佛越发复杂,但是,假如你的图象中包含了不计其数的直线、多边形之类,管理这些对象要比管理QPainter的draw语句简单得多.并且,这些图形对象也越发符合面向对象的计划要求:一个很复杂的图形可以很便利的复用.

M-V架构的意思是,Graphics View供应一个model和一个view.所谓model就是我们增添的各种对象,所谓view就是我们察看这些对象的视口.同一个model可以由很多view从差别的角度举行察看,这是很常见的需求.利用QPainter就很难实现这一点,这需求很复杂的计算,而Qt的Graphics View便可以很简单的实现.

Graphics View供应了一个QGraphicsScene作为场景,便是我们增添图形的空间,相当于整个世界;一个QGraphicsView作为视口,也就是我们察看的窗口,相当于照相机的取景框,这个取景框可以覆盖整个场景,也可以是场景的一部份;一些QGraphicsItem作为图形元件,以便scene 增添,Qt内置了很多图形,比方line、polygon等,都是担当自QGraphicsItem.

下面我们来看一下代码:

#include <QtGui>
class DrawApp : public QWidget {
public:
   DrawApp();
protected:
        void paintEvent(QPaintEvent *event);
};
DrawApp::DrawApp()
{
}
void DrawApp::paintEvent(QPaintEvent *event)
{
 QPainter painter(this);
 painter.drawLine(10, 10, 150, 300);
}
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 QGraphicsScene *scene = new QGraphicsScene;
 scene->addLine(10, 10, 150, 300);
 QGraphicsView *view = new QGraphicsView(scene);
 view->resize(500, 500);
 view->setWindowTitle("Graphics View");
 view->show();
 DrawApp *da = new DrawApp;
 da->resize(500, 500);
 da->setWindowTitle("QWidget");
 da->show();
 return a.exec();
}


  以上是“<b>Qt学习之路(30):Graphics View Framework</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .