头文件
#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();
protected:
/*
*1.回调函数(所有的虚函数都是回调函数)
*2.此函数不需要用户调用,在刷新的时候自动调用
* 1.窗口显示的时候
* 2.最大化,最小化
* 3.窗口被遮挡,重新显示
* 4.用户强制刷新的时候
* 5.。。。
* 3.如果想使用画家类在窗口中画图,操作必须在paintEvent函数中完成
*/
void paintEvent(QPaintEvent*);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QFont>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *)
{
//创建画家类对象
QPainter p(this); //指定绘图设备
//创建新画笔
QPen pen;
pen.setColor(/*Qt::green*/QColor(0,255,0));
pen.setWidth(10); //像素
pen.setStyle(Qt::DotLine);
//闭合区域使用画刷,填充
QBrush brush(Qt::blue);
//QBrush brush(QPixmap::(":/tupian/tupian.jpg");---填充图片
p.setBrush(brush);
//将新画笔设置给画家类
p.setPen(pen);
//画背景图
p.drawPixmap(0,0,QPixmap(":/tupian/tupian.jpg")); //绘制图片
//画直线
p.drawLine(QPoint(100,100),QPoint(300,500));
//画椭圆
p.drawEllipse(QPoint(200,200),100,50);
//画矩形
p.drawRect(400,200,200,200);
//写字
QFont font("华文彩云",48,75,true);
p.setFont(font);
p.drawText(100,100,"嘿嘿嘿");
//窗口的最大宽度和高度
int width=this->width();
int height=this->height();
}