Qt 实现涂鸦板一:简易涂鸦板

新建一个Qt项目,在 .h 文件中写入

复制代码
#pragma once

#include <QtWidgets/QWidget>
#include "ui_xuexi.h"

#include "QMouseEvent"
#include "QKeyEvent"
#include "QPainter"

class xuexi : public QWidget
{
    Q_OBJECT

public:
    xuexi(QWidget *parent = Q_NULLPTR);

    void mousePressEvent(QMouseEvent*e);         // 按下
    void mouseMoveEvent(QMouseEvent*e);          // 移动
    void mouseReleaseRvent(QMouseEvent*e);       // 释放

    void paintEvent(QPaintEvent* );

private:
    Ui::xuexiClass ui;

    QPixmap pix;
    QPoint lastPoint;
    QPoint endPoint;
};
复制代码

 

 

.cpp

复制代码
#include "xuexi.h"

xuexi::xuexi(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    resize(600, 500);
    pix = QPixmap(200, 200);
    pix.fill(Qt::white);
}

void xuexi::mousePressEvent(QMouseEvent*e)
{
    if (e->button() == Qt::LeftButton)
    {
        lastPoint = e->pos();
    }
}

void xuexi::mouseMoveEvent(QMouseEvent*e)
{
    if (e->buttons() == Qt::LeftButton)
    {
        endPoint = e->pos();
        update();
    }
}

void xuexi::mouseReleaseRvent(QMouseEvent* e)
{
    if (e->button() == Qt::LeftButton)
    {
        endPoint = e->pos();
        update();
    }
}

void xuexi::paintEvent(QPaintEvent*)
{
    QPainter pp(&pix);
    pp.drawLine(lastPoint, endPoint);
    lastPoint = endPoint;

    QPainter painter(this);
    painter.drawPixmap(0, 0, pix);
}
复制代码

 

编译后就是一个简易的涂鸦板

 

posted @   十一的杂文录  阅读(322)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示