织梦CMS - 轻松建站从此开始!

罗索

QT绘图系统

jackyhwei 发布于 2010-06-21 10:38 点击:次 
QT的绘图系统为UI界面在各种设备(屏幕,打印机等等)上的输出,提供了统一的API接口
TAG:

QT的绘图系统为UI界面在各种设备(屏幕,打印机等等)上的输出,提供了统一的API接口

层次结构

与Paint绘图输出直接相关的类大致为以下三个类及其子类

  • QPainter
  • QPaintDevice
  • QPaintEngine

一个绘图操作的流程,基本上来说,就是对一个QPaintDevice直接或间接调用QPainter类,QPainter类内部调用QPaintEngine进行绘图,而QPaintEngine类通常是由QPaintDevice类负责创建和管理。

为了方便的和Style系统结合,从QPainter类继承而来的QStylePainter类对Style类的绘图函数进行了简单封装,默认指定Style类API调用时的Widget,Painter等参数,简化了调用函数。所以多数Widget都是使用QStylePainter对象来绘制自身UI

以QPushButton按键的绘图事件为例:

  1. void QPushButton::paintEvent(QPaintEvent *) 
  2.  QStylePainter p(this); 
  3.  QStyleOptionButton option; 
  4.  initStyleOption(&option); 
  5.  p.drawControl(QStyle::CE_PushButton, option); 

代码使用当前Style绘图,因为QPushButton继承自QWidget,所以默认的PaintDevice就是QWidget,如果是在Linux上运行的话,后端的QPaintEngine使用QX11PaintEngine

可以使用 -graphicssystem raster/opengl 来指定不同的后端绘图引擎

supporting classes

上面三大类只是Paint系统中负责输出的类, 其它还有一大批类似

  • QBrush,QFont,QColor等绘图信息类
  • QPoint,QLine,QPixmap等图形类
  • QSize,QTransform等其它辅助类

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant@163.com BLOG:http://blog.csdn.net/colorant/

(colorant)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201006/9680.html]
本文出处:CSDN博客 作者:colorant
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容