Qt(11):QT的绘制系统

来源:互联网 发布:halcon二维码识别优化 编辑:程序博客网 时间:2024/06/08 08:10

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

[1]:自己定义一个窗口类

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;}class Painttest : public QWidget{    Q_OBJECTpublic:    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/lengthpainter.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;}

这里写图片描述

0 0