widget.h
#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();
//声明画图事件
virtual void paintEvent(QPaintEvent *event);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QBitmap>
#include <QImage>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
#if 0
//如果希望在主窗口中绘图,需要在绘图事件中绘图;如果仅仅只是在绘图设备上绘图,只要在构造函数中绘图即可???
//定义一个 QBitmap绘图设备
QBitmap bit(200,200);
//定义一个画家
QPainter painter(&bit);
painter.drawEllipse(QPoint(100,100),100,100);
bit.save("G:\\QT\\DEMO\\14_test_paibt03\\bit01.jpg");
#endif
//定义一个 QIamge绘图设备
QImage img;
//添加一个图片
img.load(":/bit01.jpg");
for(int i =0;i<100;i++)
{
for(int j=0;j<100;j++)
{
int q=qRgb(255,0,0);
img.setPixel(i,j,q);
}
}
//定义一个画家
QPainter painter(&img);
painter.drawEllipse(QPoint(20,20),10,20);
img.save("G:\\QT\\DEMO\\14_test_paibt03\\img.jpg");
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
//定义一个画家
QPainter *painter = new QPainter(this);
//划线
painter->drawLine(0,0,100,100);
painter->setPen(Qt::red);
//painter->setPen(Qt::DotLine);
painter->drawRect(100,100,100,200);
QPoint p;
// p.x()=
painter->drawEllipse(100,200,200,200);
painter->drawEllipse(400,500,300,200);
}