Qt5基础 背景图,绘图,点击事件

Qt5基础系列

Qt基础的学习笔记。此文章为在B站上学习黑马程序员Qt教程的绘图部分做的记录,加深理解,方便回看。

一、简介

主要介绍了画背景图,绘图,点击事件,对于整个绘图系统的介绍可以移步Qt5基础 QPixmap和QBitmap的区别


二、绘图

1、头文件

protected:
    //重写绘图事件
    //如果给窗口绘图,一定要在paintEvent()实现
    //绘图事件内部自动调用
    void paintEvent(QPaintEvent *);
    //点击鼠标触发事件
private slots:
    void on_pushButton_clicked();

2、引入api

#include "widget.h"//新建的项目接口
#include "ui_widget.h"//ui界面接口
#include <QPainter>//画家
#include <QPen>//画笔
#include <QBrush>//画刷

3、相关参数定义

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    x = 0;
}

Widget::~Widget()
{
    delete ui;
}

4、图片前进按钮转到槽

5、主程序

void Widget::paintEvent(QPaintEvent *){

    //QPainter p(this);
    QPainter p;//创建画家对象
    p.begin(this);//指定当前窗口为绘图设备
    //绘图操作
    //p.drawxxx();
    //画背景图
    //p.drawPixmap(0,0,width(),height(),QPixmap("../image/7.jpg"));
    p.drawPixmap(rect(),QPixmap("../image/7.jpg"));

    //定义画笔
    QPen pen;
    pen.setWidth(5);//设置线宽
    //pen.setColor(Qt::red);//设置线条颜色
    pen.setColor( QColor(14,9,234));
    pen.setStyle(Qt::DashDotLine);//设置线条风格

    //把画笔交给画家
    p.setPen(pen);

    //画直线
    p.drawLine(50,50,150,50);
    p.drawLine(50,50,50,150);

    //创建画刷对象
    QBrush brush;
    brush.setColor(Qt::red);
    brush.setStyle(Qt::Dense1Pattern);
    //把画刷交给画家
    p.setBrush(brush);

    //画矩形
    p.drawRect(150,150,50,50);

    //画圆形
    p.drawEllipse(QPoint(150,150),50,25);//qpointer圆心,50,25为x,y半径,得到的是一个椭圆

    //画图
    p.drawPixmap(x,200,80,80,QPixmap("../image/9.jpg"));


    p.end();
}
//一个按钮的点击事件,一张图片点击则向前走20像素
void Widget::on_pushButton_clicked(){
    x+=20;
    if(x>width()){//超出右边框,重置到做边框位置
        x=0;
    }
    //刷新窗口,让窗口重绘,整个窗口都刷新
    update();//间接调用paintEvent()
}

6、运行截图

在这里插入图片描述

7、结果分析

以我最爱的流川枫为素材~
蓝色线条,线宽为5,线条风格为Qt::DashDotLine,颜色RGB(14,9,234);椭圆是以150,150像素点为圆心,50,25为长短轴;矩形以150,150为起点,50为长宽;PushButton为事件触发按钮,点击可以触发图片前移20个像素点。

三、总结

绘图可能不是太常用(还不如ps做一张呢);背景,图片,时间触发这些还是比较常用的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂java杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值