qt实现涂鸦板_Qt之旅--- 10 涂鸦板
1 涂鸦板函数
就是事先设置画板,经过画图Qpainter 进行图形绘制,而后根据鼠标的轨迹进行绘制Point 而后调用upate进行图形更新从而实现涂鸦板ui
2 讲解源码 this
#include "mainwindow.h"
#include "ui_mainwindow.h"get
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);源码
resize(600,500);
pix=QPixmap(200,200);
pix.fill(Qt::white);
scale=1;it
//放大按钮
btn=new QPushButton(this);
btn->setText(tr("scale"));event
//按钮位置
btn->move(500,450);ast
//槽机制消息
QObject::connect(btn,SIGNAL(clicked(bool)),this,SLOT(ZooIn()));
}cli
MainWindow::~MainWindow()
{
delete ui;
}date
void MainWindow::paintEvent(QPaintEvent *){
//pix 在头文件中定义 pix的大小就是板子的大小
QPainter paint(&pix);
paint.drawLine(lastpoint,endpoint);
lastpoint=endpoint;
QPainter paint2(this);
// 改变大小 是经过 update 中 调用 paintEvent函数实现图形更新的
paint2.scale(scale,scale);
paint2.drawPixmap(0,0,pix);
}
void MainWindow::mousePressEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
lastpoint=event->pos();
endpoint=lastpoint;
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
{
endpoint=event->pos();
update();
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event){
if(event->buttons()&Qt::LeftButton)
{
endpoint=event->pos();
update();
}
}
//消息处理
void MainWindow::ZooIn(){
scale*=2;
update();
}
qt实现涂鸦板_Qt之旅--- 10 涂鸦板相关推荐
- WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance
我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Sin ...
- Linux 之旅 10:Shell 脚本
Linux 之旅 10:Shell 脚本 (图片来自shell/bash脚本编程) Linux 上的 Shell 脚本可以看做是类似于Windows上的批处理程序(.bat)一样的东西,其本质就是将一 ...
- 小猪的Python学习之旅 —— 10.三分钟上手Requests库
小猪的Python学习之旅 -- 10.三分钟上手Requests库 标签:Python 一句话概括本文: 本节讲解Requests库的常见使用,以及一个实战项目: 扒取某一篇微信文章里所有的图片,视 ...
- android中留言板功能,js 实现简易留言板功能
无标题文档 li{list-style:none;} li{position:relative;width:500px;} a{position:absolute;right:10px;} var c ...
- 鸿蒙开发板能干什么,【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)...
小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功 ...
- python 物联网开发板_物联网学什么开发板好?
可以试试我们的三明治开发板呀!比较容易上手,你可以使用它轻松创建一款通过智能音箱语音或者手机App控制的智能硬件产品,喜欢玩DIY的知友可以体验下. 配合我们的IoT开发平台,即可快速完成智能产品de ...
- ARM开发板 瑞芯微RK3288开发板
产品简介 G3288 开发板由邮票孔核心板,底板和液晶板三大块组成,核心板采用 8 层板工艺设计, 确保稳定可靠,可以批量用于平板电脑,车机,学习机,POS机,游戏机,行业监控等多种领域.主控为Cor ...
- 惠普触控板使用指南_Windows10触控板的正确使用方法
如何正确使用Windows10系统的触控板?Windows的触控板虽然不及MacBook,但是它的功能也不能小觑哦!如果你觉得Windows的触控板太LOW了,可能是你的使用方法不对.下面小编给大家分 ...
- 选择的串口 _ 不存在或开发板没有连接_PC 和开发板之间传输文件
8.1 传输文件的多种方法 在嵌入式开发中,涉及交叉编译:在 PC 上编译,在开发板上运行.所以就涉及 PC 和开发板之间的文件 传输,方法有多种:网络传输.串口传输.USB 传输,当然,还有最笨的方 ...
- php网站留言,php实现网站留言板功能,php实现留言板_PHP教程
php实现网站留言板功能,php实现留言板 我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的 畅言留言板样式: 网易跟帖样式: 原理 需要在评论表添加两个主要字段 ...
最新文章
- 【组队学习】【29期】7. 集成学习(上)
- 关系类型总结和对应的注解
- 对抗新冠也用「梯度下降」,进化生物学家靠这个预测病毒进化方向
- Silverlight与Flash的技术比较(图)
- android 方法超时,android socket.io中的发出或确认超时处理?
- java if else程序,java – if then else条件评估
- 【转载】登录PDMS总是切换到Monitor,这是为什么?!
- python定义数据框大小_python – 如何设置框架的最小和最大高度或宽度?
- 张本伟:IT人如何收入500万?
- Win10电脑怎么恢复出厂设置
- 公链,多少资金盘假汝之名以行?
- C/C++使用ODBC连接MSSQL数据库
- 数组的归一化c语言,如何归一化频率数组
- 有哪些小巧舒适的蓝牙耳机?推荐几款小巧且舒适的蓝牙耳机
- 狂神mysql笔记 md_MyBatis狂神总结笔记
- STM 32的USB时钟的配置
- 客快物流大数据项目(八十八):ClickHouse快速入门
- B站一键查询视频/分P视频/番剧的弹幕发送者
- 【嵌入式】嵌入式设备实现网络功能——综述
- 南师大计算机学科评估排名,南京师范大学全国排名,2021南京师范大学排名榜
热门文章
- CF1009F Dominant Indices
- redis实战【西橙先生】
- HTML学生个人网站作业设计:电影网站设计——橙色国外电影(13页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
- Java集成快递100的订阅服务和根据物流单号查询物流详情的接口
- CSS 3之设置图片边框
- 网站建设公司该不该把web前端外包出来!精辟
- sonar代码质量分析
- Got permission denied while trying to connect to the Docker daemon socket
- 概率分布F(x)和概率密度f(x)
- Mac开发-NSTextView软回车转换为硬回车