Qt(11):QT的绘制系统

[0]:paintter类可以类比为画笔,paintDevice类作为绘制的地点(Qwidiget,QImage都是子类).

[1]:自己定义一个窗口类
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Painttest : public QWidget
{
    Q_OBJECT

public:
    explicit Painttest(QWidget *parent = 0);
    ~Painttest();
    static int count;
protected:
    void paintEvent(QPaintEvent*);//重写事件回调函数
private:

    Ui::Widget *ui;
};
//int Painttest::count = 0;
#endif // WIDGET_H

[2]:实现相应的绘制过程,附加了一些代码用来体会QpaintEvent的触发.

#include "widget.h"
#include "QEvent"
#include "QPainter"
#include "QDebug"
#include "ui_widget.h"

int Painttest::count = 0;
Painttest::Painttest(QWidget *parent) :
    QWidget(parent),ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->resize(800,600);
    this->setWindowTitle("Paint demo");
}
Painttest::~Painttest()
{
    delete ui;
}
void Painttest::paintEvent(QPaintEvent*  )//重写事件回调函数
{    
QPainter painter(this);//创造画笔,并且设置该画笔的区域是该Widget,
//Qwidiget是QPaintDevice的子类
painter.drawLine(80,100,650,400);//from (x1,y1) -> (x2,y2)
painter.setPen(Qt::red);
painter.drawRect(10,10,100,600);//这里给出的形式是:left corner的坐标,以及width/length
painter.setPen(QPen(Qt::green,5));
painter.setBrush(Qt::blue);
painter.drawEllipse(50,150,400,200);
painter.setPen(Qt::black);
if(++count%2)
painter.drawRect(30,30,100,400);
else
    painter.drawEllipse(30,30,100,400);
qDebug()<<count;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值