画板

通过按钮以及捕获鼠标的press与move信号,利用pixmap在窗口中完成画版上作画、擦除、换色功能。

代码示例:

.h文件

#ifndef MHUATU_H
#define MHUATU_H#include <QMainWindow>
#include <QPixmap>
#include <QMouseEvent>
#include <QPainter>
#include <QPaintEvent>
#include <QDebug>
#include <QPushButton>
#include <QColor>
#include <QColorDialog>
class mhuatu : public QMainWindow
{Q_OBJECTQPixmap *mypix;QPoint startpoint;public:mhuatu(QWidget *parent = nullptr);~mhuatu();void mousePressEvent(QMouseEvent *e);void mouseMoveEvent(QMouseEvent * e);void paintEvent(QPaintEvent *);QPushButton *btn1;void setcolor();QPen pen;};
#endif // MHUATU_H

.cpp文件:

#include "mhuatu.h"mhuatu::mhuatu(QWidget *parent): QMainWindow(parent)
{//设置画板尺寸this->setFixedSize(1024,768);mypix = new QPixmap(this->size());mypix->fill(Qt::white);  // 自定义绘制板填充为白色this->setWindowTitle("画图");btn1 = new QPushButton();btn1->setParent(this);btn1->resize(75,30);btn1->move(width()-75, 0);btn1->setText("颜色");btn1->setIcon(QIcon(":/icon/color.png"));  //通过添加的资源文件设置按钮图标connect(btn1, &QPushButton::clicked, this, &mhuatu::setcolor);pen.setColor(Qt::green);
}mhuatu::~mhuatu()
{
}void mhuatu::mousePressEvent(QMouseEvent *e)
{if(e->button()==Qt::RightButton){pen.setColor(Qt::white);   //右键为擦除模式startpoint = e->pos();}else if(e->button()==Qt::LeftButton){startpoint = e->pos();}}
void mhuatu::mouseMoveEvent(QMouseEvent *e)
{//申请一个画家类QPainter painter(mypix);pen.setWidth(10);//pen.style();painter.setPen(pen);//画线painter.drawLine(startpoint,e->pos());startpoint=e->pos();//实时更新触发绘制事件update();}
void mhuatu::setcolor()
{QColor color = QColorDialog::getColor(Qt::white,this,"颜色");if(color.isValid()){pen.setColor(color);  //设置画笔颜色}
}void mhuatu::paintEvent(QPaintEvent *)
{QPainter painter(this);painter.drawPixmap(0,0,*mypix);}

测试结果:

有图可见能通过颜色按钮对画笔的颜色进行切换并能完成正常的作画、擦除功能

简易闹钟

使用Line_Edit输入预计时间完成对时间进行计时,并使用消息框提醒预定时间的预计事件。

代码示例:

.h文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTime>
#include <QMouseEvent>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timerEvent(QTimerEvent *e);QString atime;QString aim;bool flag=true;
private slots:void on_btn_start_clicked();void on_btn_stop_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp文件:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *e)
{Q_UNUSED(e);QTime sys_t = QTime::currentTime();QString ts = sys_t.toString("hh:mm:ss");if(ts==atime&&flag){aim=ui->aim_ed->text();QMessageBox box(QMessageBox::NoIcon, "CLOCK", aim, QMessageBox::Ok);box.exec();flag=false;ui->aim_ed->clear();ui->time_ed->clear();}ui->time_l->setText(ts);}void Widget::on_btn_start_clicked()
{flag=true;atime=ui->time_ed->text();startTimer(1000);
}void Widget::on_btn_stop_clicked()
{this->close();
}

测试结果:

当时间达到预计时间时跳出弹窗完成下方输入事件的提示

Qt完成简易闹钟与画板相关推荐

  1. Qt制作简易的酷狗音乐播放器

    Qt制作简易的音乐播放器流程: 一.必须先抓取酷狗音乐的api,必须要得到搜索音乐的 hash . album_id 值.dfid.mid.platid等数据. 至于获取的方法,可以参考网上的连接:h ...

  2. QT制作简易串口调试助手

    文章目录 QT制作简易串口调试助手 0 简介 1 界面制作 2 逻辑实现 2.1 添加与可用串口信息有关的类的准备 2.2 读取可用串口并添加到控件 2.3 打开串口 2.4 关闭串口 2.5 串口收 ...

  3. Qt学习(四)---实例涂鸦画板mspaint

    Qt学习(四)-实例涂鸦画板mspaint 一.Qt图形绘制 自己在Qt开源社区在自学yafeilinux前辈的<Qt快速入门系列教程>中的图形篇,结合所学的知识,可以做一个涂鸦板实例 二 ...

  4. qt制作简易视频截帧软件

    qt制作简易视频截帧软件 1.视频进度条滑动参考 https://blog.csdn.net/zong596568821xp/article/details/78991397?spm=1001.201 ...

  5. QT编写简易截图工具

    QT编写简易截图工具 Windows和Linux下编译通过,版本5.9.1 ##设计界面 新建Widget项目,进入ui设计界面,添加QLabel和两个QPushButton,布局如下: Button ...

  6. 简易的canvas画板

    没事仿照windows画板工具用canvas实现了一个简易版的画板. html: 1 <!doctype html> 2 <html> 3 <head> 4 < ...

  7. Qt / PyQt 简易毛玻璃效果

    目录 现有功能 运行结果 Qt / PyQt 源码下载 现有功能 用模糊功能实现简易的毛玻璃效果. 鼠标移动无边框窗口. 运行结果 Qt / PyQt 源码下载 GitHub - la-vie-est ...

  8. Qt实现简易的浏览器

    一.Qt的webenginewidgets模块和MSVC2017编译环境的配置 webenginewidgets模块 该模块需要在安装Qt时勾选Qt WebEngine. MSVC2017编译环境的配 ...

  9. Android 简易闹钟的实现

    主要是通过广播,实现一个闹钟的简易功能. 实现效果如下: 主界面为一个简易的设置闹钟Button,点击"设置闹钟"弹出时间设置窗.设置成功后,会自动弹出弹窗,提示"时间到 ...

最新文章

  1. 常见的和端口,IP相关的企业面试题
  2. python automl_分享一篇比较全面的AutoML综述
  3. Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头
  4. 顺序查找法,用函数实现。
  5. 论文浅尝 | Zero-Shot Transfer Learning for Event Extraction
  6. CentOS6.x系统挂载NTFS分区的移动硬盘
  7. python sorted下标_【面试划重点】-- Python常见知识点
  8. 网易云课堂微专业测试工程师 来源bilibili
  9. 如何使用GetParent来得到父对话框的指针
  10. LINUX使用patchelf增加/修改rpath
  11. Atitit websocket 使用大概总结 使用场景 websocket 实时信息的Web应用却带来了很大的不便,如带有即时通信、实时数据、订阅推送等功能的应 用 实时数据可以用来更新缓存
  12. 自考 02333 软件工程 思维导图 结构化方法
  13. python风变编程费用_风变编程的收费课程靠谱吗?
  14. matlab离散系统的频率响应,离散系统频率响应和零极点分布实验报告
  15. 织梦dedecms建站流程
  16. 【学术论文写作】02 Tone and Diction
  17. 副业搞钱的几个野路子:两个年入10万的零成本赚钱项目
  18. 编程啦1001_超级最小公倍数
  19. SQL中的连接查询与嵌套查询
  20. 地方立法限制人肉搜索作用有限

热门文章

  1. npm安装electron时卡死 ,而利用cnpm安装electron时失败(等一系列幺蛾子)
  2. [渝粤教育] 西安交通大学 工程热力学 参考 资料
  3. ajax跨域获取cookie,ajax跨域获取cookie信息(示例代码)
  4. nginx——keepalived
  5. 超详细的实现上传文件功能教程,文件上传实现。
  6. HAUTOJ 1262魔法宝石 优先队列
  7. c语言trim函数去除全部空格,Excel Trim函数使用方法,含用三个去空格函数都删不了的空格实例...
  8. PHP三网码支付系统源码PC软件带云端源码/含三套前端模板免签支付系统安装教程
  9. python animation 轨迹_在jupyter noteb之外显示动画
  10. 实验任务(三)---密码破解技术