QT-事件-绘图
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(); //绘图事件 void paintEvent(QPaintEvent *); int posX = 0; private: Ui::Widget *ui; }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QPainter> //画家类 #include <QTimer> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //点击移动按钮,移动图片 connect(ui->pushButton,&QPushButton::clicked,[=](){ posX+=20; //如果要手动调用绘图事件 用update更新 update(); }); QTimer * timer = new QTimer(this); timer->start(10); connect(timer,&QTimer::timeout,[=](){ posX++; update(); }); } void Widget::paintEvent(QPaintEvent *) { // //实例化画家对象 this指定的是绘图设备 // QPainter painter(this); // //设置画笔 // QPen pen(QColor(255,0,0)); // //设置画笔宽度 // pen.setWidth(3); // //设置画笔风格 // pen.setStyle(Qt::DotLine); // //让画家 使用这个笔 // painter.setPen(pen); // //设置画刷 // QBrush brush(Qt::cyan); // //设置画刷风格 // 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,150,50) , "好好学习,天天向上"); //////////////////////////////高级设置 /////////////////////////////// // 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)); /////////////////////////////////利用画家 画资源图片 /////////////////// QPainter painter(this); QPixmap pix = QPixmap(":/Image/Luffy.png"); //如果超出屏幕 从0开始 if(posX >= this->width()) { posX = -pix.width(); } painter.drawPixmap(posX,0,pix); } Widget::~Widget() { delete ui; }
天道酬勤 循序渐进 技压群雄