Essential Qt 第十五章 绘图事件

      前面简单的演示了Qt的几个事件,其中包括了绘图事件,而这里则比较详细的讲下绘图事件

      在现实世界里,如果你需要画一幅图画,你要进行三个步骤,第一,准备画图的工具,画笔,画刷之类的,第二,选择画图的位置,你打算画在纸上,课桌上还是大街的墙上,第三,画你想画的内容,你打算画一些直线曲线来表达你的抽象思维,还是绘制彩色区域,或则直接写上一些你喜欢的文字。通过这三个步骤你就可以在你想要的地方画上一幅你想要的画,而Qt正是按照这个步骤来完成绘图的


      首先是准备画图工具,Qt准备了QPainter类来作为绘图工具,这个类可以通过函数setPen(),setBrush()来设置画图工具,画笔一般用于绘制线条,而画刷通常用于区域绘制.第二步是决定绘图的位置,通常回是某个窗体(后面我们将看到也可以在其他地方绘制),无论需要在那个窗体绘制,就把这个窗体设为QPainter的父对象.第三步就是需要绘制的内容了,为此QPainter提供了大量的函数来满足需求

void drawPoint(int x int y);  //绘制一个点
void drawLine(int x1 ,  int y1 , int x2 , int y2); //绘制一条直线
void drawRect(cosnt QRect rect);  //绘制一个矩形
void drawEllipse(int x , int y , int width , int height);  //绘制一个(椭)圆
void drawPie(const QRectF& rect , int starAngle, int spacAnglr);  //绘制一个扇形
void drawPixmap(int x, int y , const QPixmap& pix);  //绘制一幅图片
void drawText(int x , int y , const QString& str);  //绘制文字
      以上函数均包含了大量的重载函数以满足需求,当然QPainter提供的绘制函数不止上面这些介绍,文档中提供了全部函数的目录,有需要的可以查询文档


      在明确了绘图的步骤后我们就可以开始绘制了,首先我们现在一个QWidget上绘制一条直线,方便起见,我们继承了Qwidget,然后开始在上面绘制

PaintEventDemo::PaintEventDemo(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(500,500);
    QPainter p(this);  //使用了画图工具QPainter,而我们需要画画的地方是窗体自身,所以这里将画图工具的父对象设为this
    p.setPen(Qt::red);  //由于是画直线,这里将画图工具的画笔设为红色,方便观察
    p.drawLine(5,5,100,100);
}

      运行程序的时候,出现了一个窗体,但很遗憾的是窗体上并没有出现期望的红线,而编译器则给出类似这样的信息

      QWidget::paintEngine: Should no longer be called

      QPainter::begin: Paint device returned engine == 0, type: 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值