[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;
};
#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);
painter.drawLine(80,100,650,400);
painter.setPen(Qt::red);
painter.drawRect(10,10,100,600);
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;
}