QT绘图基础
2013-10-14 12:55
232 查看
一.QT的2D绘图
QT的2D绘图由三个主要的类搭起整个框架:QPainter,QPainterDevice和QPainterEngine。
1. QPainter负责绘图操作的具体执行,如画点,画线,填充,变换等。
用QPainter绘图,需创建一个QPainter,再将指针传到该设备中。
void paintEvent(QPaintEvent
*event)
{Qpainter painter(this);
}
QPainter有很多以draw开头的函数,用于各种图形的绘制,比如这里的drawLine,drawRect和和drawEllipse等。具体的参数请参阅API文档。下图给出了QPainter的draw函数的实例,本图来自C++
GUI Programming with Qt4, 2nd Edition.
2.
QPainterDevice为QPainter用来绘图的绘图设备基类,其实际预定义的子类绘图设备包括Qwidget,QImage,QPixmap,QPicture,QPrinter,QSvgGenerator等。
3. QPainterEngine提供不同类型设备的接口,实现交互。
二.Graphics View 框架
Graphics
View框架为基于图元的模型视图模型,包括主要三个类:QGraphicsScene,QGraphicsView,QGraphItem,分别为场景,视图,图元。
1.
QGraphicsScene:场景管理多个图元,可以传播事件给每个被管理的图元,实现图元的选择,焦点转移,提供无变换的场景的绘制。
场景是图元的容器,通过QGraphicsScene::addItem()可以将图元加入场景容器中。
场景使用render()函数在指定绘图设备上进行场景的绘制。
2. QGraphicsView:视图窗口部件,使场景内容可视化。一个场景可以同时拥有几个视图,这样就意味着相同的场景可以实现不同的可视化窗口。
视图可提供滚动条以浏览大的场景,可以选择QPainter或者OpenGL两种绘图方式绘图。可以接收键盘,鼠标事件。
视图与场景拥有不同的坐标系统,两者之间可通过mapToScreen()和mapFromScene()函数实现坐标转换。
3.
QGraphicsItem:图元基类,其派生的常用标准图元有QGraphicsRectItem,QGraphicsLineItem,QGraphicsSvgItem等,另外可以自定义派生于QGraphicsItem的图元类。图元可处理鼠标,键盘,拖放,分组,碰撞检测等事件,拥有自己的坐标系统,可以变换,可以包含子图元。
待续。。。
QT的2D绘图由三个主要的类搭起整个框架:QPainter,QPainterDevice和QPainterEngine。
1. QPainter负责绘图操作的具体执行,如画点,画线,填充,变换等。
用QPainter绘图,需创建一个QPainter,再将指针传到该设备中。
void paintEvent(QPaintEvent
*event)
{Qpainter painter(this);
}
QPainter有很多以draw开头的函数,用于各种图形的绘制,比如这里的drawLine,drawRect和和drawEllipse等。具体的参数请参阅API文档。下图给出了QPainter的draw函数的实例,本图来自C++
GUI Programming with Qt4, 2nd Edition.
2.
QPainterDevice为QPainter用来绘图的绘图设备基类,其实际预定义的子类绘图设备包括Qwidget,QImage,QPixmap,QPicture,QPrinter,QSvgGenerator等。
3. QPainterEngine提供不同类型设备的接口,实现交互。
二.Graphics View 框架
Graphics
View框架为基于图元的模型视图模型,包括主要三个类:QGraphicsScene,QGraphicsView,QGraphItem,分别为场景,视图,图元。
1.
QGraphicsScene:场景管理多个图元,可以传播事件给每个被管理的图元,实现图元的选择,焦点转移,提供无变换的场景的绘制。
场景是图元的容器,通过QGraphicsScene::addItem()可以将图元加入场景容器中。
场景使用render()函数在指定绘图设备上进行场景的绘制。
2. QGraphicsView:视图窗口部件,使场景内容可视化。一个场景可以同时拥有几个视图,这样就意味着相同的场景可以实现不同的可视化窗口。
视图可提供滚动条以浏览大的场景,可以选择QPainter或者OpenGL两种绘图方式绘图。可以接收键盘,鼠标事件。
视图与场景拥有不同的坐标系统,两者之间可通过mapToScreen()和mapFromScene()函数实现坐标转换。
3.
QGraphicsItem:图元基类,其派生的常用标准图元有QGraphicsRectItem,QGraphicsLineItem,QGraphicsSvgItem等,另外可以自定义派生于QGraphicsItem的图元类。图元可处理鼠标,键盘,拖放,分组,碰撞检测等事件,拥有自己的坐标系统,可以变换,可以包含子图元。
待续。。。
相关文章推荐
- QT 打印的简单实现(转)
- ubuntu 11.10 下安装Qt的开发坏境
- QT总结第5篇:qmake的使用,如何操作QT命令行
- 编译qt
- QT总结第4篇:.lib和.dll文件的区别
- Qt5学习之路(vs2012下创建一个QT应用程序)2013-10-14
- VDC 之ONVIF和视频界面控制
- 飞凌ok6410快速搭建QT开发环境
- QT中速度仪表盘控件QMeter的安装方法
- QTableView的indexAt使用方法
- qt连接sqlite数据库(win下Qt5)
- QT实现WebKugou客户端
- Qt5学习之路(VS下Qt设计师文件的使用)2013-10-13
- qt中界面参数传递
- Qt程序在Debug模式下跟踪Q_ASSERT断言
- Qt问题记录: 关于继承顺序不同导致编译不过
- QT窗体间传值之全局变量
- QT窗体间传值总结之Signal&Slot
- QT全局变量声明及使用
- 安装qt-x11-opensource-src-4.5.3和qt-embedded-linux-opensource-src-4.5.3步骤