Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563564
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2013-12-19 15:50:13


Qt绘图要用到QPainter类,绘图的设备通常是主部件,

绘制时需要先定义一个QPainter类对象,绘制可以选择的道具可以使Qpen(画笔)QBrush(画刷)。使用QPen写文本时还可以指定字体(QFont)

 

QPen定义了用于QPainter应该怎样画线或者轮廓线。画笔具有样式、宽度、画刷、笔帽样式和连接样式等属性。画笔的样式style()定义了线的样式。

画刷brush()用于填充画笔所绘制的线条。

笔帽样式capStyle()定义了使用QPainter绘制的线的末端;

连接样式joinStyle()则定义了两条线如何连接起来。


 

通过一个实例来介绍 QPainter 的使用:

点击(此处)折叠或打开

  1. class PaintedWidget : public QWidget
  2. {
  3.     Q_OBJECT
  4. public:
  5.     PaintedWidget(QWidget *parent = 0);
  6. protected:
  7.     void paintEvent(QPaintEvent *);
  8. };

  9. PaintedWidget::PaintedWidget(QWidget *parent) :
  10.     QWidget(parent)
  11. {
  12.     resize(800, 600);
  13.     setWindowTitle(tr("Paint Demo"));
  14. }

  15. void PaintedWidget::paintEvent(QPaintEvent *)
  16. {
  17.   QPanter painter;
  18.     QPen pen;
  19.     pen.setColor(QColor(255,0,0)); //设置画笔为红色
  20.     painter.setPen(pen); //选择画笔
  21.     painter.drawLine(0,0,100,100); //用该红色画笔画一条线,起点(0,0),终点(100,100)
  22.     painter.end(); //结束绘制。绘制时使用的任何资源都被释放。虽然有时不需要调用end(),析构函数将会执行它
  23. }

绘图时,需要重载QWidget类的paintEvent ( QPaintEvent * )方法

 

什么时候绘制的问题,其实在使用类的对象的时候,如果类中重写了paintEvent事件,对象就会调用一次paintEvent函数,即定义对象时会调用该绘制事件。如果要完成图像重绘或刷新图像时怎么办呢?这就要使用repaint()update()函数完成,在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。

 
返回目录:Qt学习整理

阅读(1949) | 评论(0) | 转发(1) |
0

上一篇:QT 自定义事件

下一篇:Qt 反走样

给主人留下些什么吧!~~