绘图事件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void paintEvent(QPaintEvent *event);
private:
Ui::Widget *ui;
};
#endif
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pen(QColor(255,0,0));
pen.setWidth(3);
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
QBrush brush(Qt::green);
brush.setStyle(Qt::Dense7Pattern);
painter.setBrush(brush);
painter.drawLine(QPoint(0,0),QPoint(100,100));
painter.drawEllipse(QPoint(100,100),50,50);
painter.drawRect(QRect(20,20,50,50));
painter.drawText(QRect(10,200,200,50),"好好学习,天天向上");
}
Widget::~Widget()
{
delete ui;
}
高级设置
QPainter painter(this);
painter.drawEllipse(QPoint(100,50),50,50);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(QPoint(200,50),50,50);

painter.drawRect(QRect(20,20,50,50));
painter.translate(100,0);
painter.save();
painter.drawRect(QRect(20,20,50,50));
painter.translate(100,0);
painter.restore();
painter.drawRect(QRect(20,20,50,50));

int posx = 0;
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->pushButton,&QPushButton::clicked,[=](){
posx += 20;
update();
});
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
if(posx > this->width())
{
posx = 0;
}
painter.drawPixmap(posx,0,QPixmap(":/new/prefix1/Image/logo1.jpg"));
}
绘图设备
Pixmap
#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pix(300,300);
pix.fill(Qt::white);
QPainter painter(&pix);
painter.setPen(QPen(Qt::green));
painter.drawEllipse(QPoint(150,150),100,100);
pix.save("D:\\pix.png");
}
Widget::~Widget()
{
delete ui;
}

QImage
QImage img(300,300,QImage::Format_RGB32);
img.fill(Qt::white);
QPainter painter(&img);
painter.setPen(QPen(Qt::blue));
painter.drawEllipse(QPoint(150,150),100,100);
img.save("D:\\img.png");

void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage img;
img.load(":/Image/logo1.jpg");
for(int i = 50; i<100 ; i++)
{
for(int j = 50;j<100;j++)
{
QRgb value = qRgb(255,0,0);
img.setPixel(i,j,value);
}
}
painter.drawImage(0,0,img);
}

QPicture
#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QPainter>
#include <QPicture>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPicture pic;
QPainter painter;
painter.begin(&pic);
painter.setPen(QPen(Qt::cyan));
painter.drawEllipse(QPoint(150,150),100,100);
painter.end();
pic.save("D:\\pic.png");
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPicture pic;
pic.load("D://pic.why");
painter.drawPicture(0,0,pic);
}

QBitmap(黑白色)
QWidget