1、绘画事件
2、效果
3、widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
index=338;
connect(ui->btn_1,SIGNAL(clicked()),this,SLOT(doProcessBtnClicked()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::mousePressEvent(QMouseEvent *event){
QPoint m = event->globalPos();
ui->textEdit->append(QString("(%1,%2)").arg(m.x()).arg(m.y()));
}
void Widget::paintEvent(QPaintEvent *event){
QPainter mypainter(this);
mypainter.drawPixmap(0,0,this->width(),this->height(),QPixmap("../GIF/1.gif"));
QPen pen1;
pen1.setStyle(Qt::DotLine);
pen1.setColor(Qt::red);
pen1.setWidth(2);
mypainter.setPen(pen1);
mypainter.drawLine(QPointF(0,0),QPointF(this->width(),this->height()));
mypainter.drawRect(100,100,500,500);
mypainter.drawEllipse(QPoint(this->width()/2,this->height()/2),100,50);
QBrush mybrush;
mybrush.setStyle(Qt::CrossPattern);
mybrush.setColor(QColor(121,54,36));
mybrush.setColor(Qt::yellow);
mypainter.setBrush(mybrush);
QPointF points[4]={
QPointF(134.0,92.0),
QPointF(959.0,194.0),
QPointF(809.0,712.0),
QPointF(index,500.0)
};
mypainter.drawPolygon(points,4);
}
void Widget::closeEvent(QCloseEvent *event){
int ret = QMessageBox::information(this,"message","are you quit?",QMessageBox::Yes|QMessageBox::No);
if(ret==QMessageBox::Yes)
{
event->accept();
}
else {
event->ignore();
}
}
void Widget::resizeEvent(QResizeEvent *event){
qDebug()<<"old:"<<event->oldSize()<<endl;
qDebug()<<"new:"<<event->size()<<endl;
}
void Widget::doProcessBtnClicked(){
qDebug()<<"btn_clicked"<<endl;
index -=10;
this->update();
}
4、widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
#include <QMouseEvent>
#include <QPainter>
#include <QPen>
#include <QPaintEvent>
#include <QMessageBox>
#include <QCloseEvent>
#include <QResizeEvent>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
int index;
void Init();
protected:
void mousePressEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
void closeEvent(QCloseEvent *event);
void resizeEvent(QResizeEvent *event);
private slots:
void doProcessBtnClicked();
};
#endif