Qt绘制网格和曲线
绘制网格:
void Widget::drawGrid(QPainter &p, QRect &windRect)
{QRect rect(windRect.left()+m_margins.left(),windRect.top()+m_margins.top(),windRect.width()-m_margins.left()-m_margins.right(),windRect.height()-m_margins.top()-m_margins.bottom());if (!rect.isValid())return;QPen penDot(Qt::DotLine);penDot.setColor(Qt::gray);QPen penSolid(Qt::SolidLine);penSolid.setColor(Qt::black);
// pen.setColor(this->palette().light().color());p.setPen(penSolid);p.drawRect(rect.adjusted(0,0,-1,-1));int Xpos;qreal Xvalue;QString xlab;QFontMetrics textSize(this->font());QRect textRect;for(int i=0;i<=m_XTicks;i++){Xpos=rect.left()+i*m_xRatio; //Xvalue=m_xmin+i*m_xspan/m_XTicks;//p.setPen(penDot);p.drawLine(Xpos,rect.top(),Xpos,rect.bottom());p.setPen(penSolid);p.drawLine(Xpos,rect.bottom(),Xpos,rect.bottom()+5);xlab=QString::asprintf("%.1f",Xvalue);textRect=textSize.boundingRect(xlab);//得到字符串的rectp.drawText(Xpos-textRect.width()/2,rect.bottom()+5+textRect.height(),xlab);}xlab="time(sec)";textRect=textSize.boundingRect(xlab);//得到字符串的rectp.drawText(rect.left()+(rect.width()-textRect.width())/2,windRect.bottom()-textRect.height()/2,xlab);xlab="曲线绘图";textRect=textSize.boundingRect(xlab);//得到字符串的rectp.drawText(rect.left()+(rect.width()-textRect.width())/2,(m_margins.top()-textRect.height())/2+textRect.height(),xlab);int Ypos;qreal Yvalue;QString ylab;for(int i=0;i<=m_YTicks;i++){Ypos=rect.bottom()-i*m_yRatio; //Yvalue=m_ymin+i*m_yspan/m_YTicks;//p.setPen(penDot);p.drawLine(rect.left(),Ypos,rect.right(),Ypos);p.setPen(penSolid);p.drawLine(rect.left()-5,Ypos,rect.left(),Ypos);ylab=QString::asprintf("%.1f",Yvalue);textRect=textSize.boundingRect(ylab);//得到字符串的rectp.drawText(rect.left()-10-textRect.width(),Ypos+textRect.height()/2,ylab);}ylab="函数值";textRect=textSize.boundingRect(ylab);//得到字符串的rectp.save();p.translate(0,windRect.height()/2); //平移到左侧中心p.rotate(-90);//逆时针旋转90度,变成正北为X轴,正东为Y轴p.drawText(-textRect.width()/2,(m_margins.left()-textRect.height())/2,ylab);p.restore();
}
绘制曲线:
void Widget::drawCurve(QPainter &p, QRect &windRect)
{QPolygon curve(m_points.count());for(int i=0;i<m_points.count();i++)curve[i]=m_points[i];QPen penSolid(Qt::SolidLine);penSolid.setColor(Qt::blue);penSolid.setWidth(2);p.setPen(penSolid);p.drawPolyline(curve);
}
相关文章:
Qt绘制网格和曲线
绘制网格: void Widget::drawGrid(QPainter &p, QRect &windRect) {QRect rect(windRect.left()m_margins.left(),windRect.top()m_margins.top(),windRect.width()-m_margins.left()-m_margins.right(),windRect.height()-m_margins.top()-m_margins.bo…...
2023-11-12
今日比较摆烂, 但是把自写管道的原理搞懂了, 主要是把 exp 完完全全看懂了, 还不错. 然后就没干啥了. 明日计划: 学校的作业. AFL 源码. 我真是服了我自己了, AFL 源码搁多久了, 操操操 然后把 seccomp 重新学习下...
[工业自动化-16]:西门子S7-15xxx编程 - 软件编程 - 西门子仿真软件PLCSIM
目录 前言: 一、PLCSIM仿真软件 1.1 PLCSIM仿真软件基础版(内嵌) 1.2 PLCSIM仿真软件与PLCSIM仿真软件高级版的区别? 1.3 PLCSIM使用 前言: PLC集成开发环境是运行在Host主机上,Host主机与PLC可以通过…...
运行npm install卡住不动的几种解决方案
在前端开发经常会遇到运行npm install 来安装工具包一直卡住不动,为此这里提供几种解决方案,供大家参考学习,不足之处还请指正。 第一种方案、首先检查npm代理,是否已经使用国内镜像 // 执行以下命令查看是否为国内镜像 npm con…...
[Android]_[初级]_[配置gradle的环境变量设置安装位置]
场景 在开发Android项目的时候, gradle是官方指定的构建工具。不同项目通过wrapper指定不同版本的gradle。随着项目越来越多,使用的gradle版本也增多,导致它以来的各种库也增加,系统盘空间不足,怎么解决? 说明 grad…...
docker更改存储目录原因及方案
为什么一定要将docker的存储目录挂载到其他目录 docker在安装时默认存储目录在/var/lib/docker,而该目录是在系统盘下的。docker安装后,会使用各种各样的镜像,动辄几个G,那么如此多的镜像文件,装着装着系统盘就撑爆了…...
HTTPS的工作流程
. HTTPS是什么? https是应用层中的一个协议,是在http协议的基础上引入的一个加密层。 为什么需要HTTPS 由于http协议内容都是按照文本的方式明文传输的,这就导致传输过程中会出现一些被篡改的情况。运营商劫持事件最开始百度,…...
C++语言的广泛应用领域
目录 1. 系统级编程 2. 游戏开发 3. 嵌入式系统 4. 大数据处理 5. 金融和量化分析 6. 人工智能和机器学习 7. 网络和通信 结语 C是一种多范式编程语言,具有高性能、中级抽象能力和面向对象的特性。由Bjarne Stroustrup于1979年首次设计并实现,C在…...
Lambertian模型(完美漫反射)
这里使用相乘的方式组合光照色和纹理色。根据这个模型,面朝光源的区域光照强度高,纹理色也相应增强。面背光源的区域光照弱,纹理色也被抑制。这样通过光照和纹理的结合,可以合成出具有照明效果的面部颜色,而不仅仅是固定的纹理本身的颜色。相乘方式可以近似实现不同光照方向下面…...
MATLAB的编程与应用,匿名函数、嵌套函数、蒙特卡洛法的掌握与使用
目录 1.匿名函数 1.1.匿名函数的定义与分类 1.2.匿名函数在积分和优化中应用 2.嵌套函数 2.1.嵌套函数的定义与分类 2.2.嵌套函数彼此调用关系 2.3.嵌套函数在积分和微分中应用 3.微分和积分 4.蒙特卡洛法 4.1.圆周率的模拟 4.2.计算N重积分(均匀分布&am…...
NFS服务器的搭建
架设一台NFS服务器,并按照以下要求配置 准备阶段:准备两台虚拟机,一台作为服务端,一台作为客户端 服务端(Server):192.168.75.139 客户端(Client):192.168.75.160 两…...
安卓Frida 常用脚本
打印调用堆栈, hook 某个方法,想看下调用堆栈,代码如下: function showStacks() {Java.perform(function () {send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));});} 二,需要hook okhttp3 HttpUrl …...
机器学习数据预处理——Word2Vec的使用
引言: Word2Vec 是一种强大的词向量表示方法,通常通过训练神经网络来学习词汇中的词语嵌入。它可以捕捉词语之间的语义关系,对于许多自然语言处理任务,包括情感分析,都表现出色。 代码: 重点代码&#…...
面试算法常考题之-------逆波兰式合集
逆波兰式背景介绍 逆波兰式是一种特殊的数学表达式表示法,它的诞生背景可以追溯到20世纪30年代。当时,波兰数学家Jan Wjtowicz和Wacław Sierpiński提出了一种新的数学表达式表示法,这种表示法将运算符放在操作数之后,而不是传统…...
独热编码和Word2Vec的区别
独热编码和Word2Vec都是自然语言处理中将词向量化的方式,但它们之间并没有直接的关系或依赖性。它们可以被视为在处理词向量时的两种不同方法或策略。 独热编码是一种简单直观的方法,每个词被表示为一个长向量,其中只有一个元素是1࿰…...
RestTemplate.postForEntity 方法进行 HTTP POST 请求
RestTemplate 是 Spring Framework 提供的一个用于处理 HTTP 请求的客户端工具。其中,postForEntity 是 RestTemplate 提供的用于发送 HTTP POST 请求并返回 ResponseEntity 对象的方法。 public <T> ResponseEntity<T> postForEntity(String url, Obj…...
盘点双11!阿里妈妈助这些品牌短视频赢增长!
刚刚!一年一度的双11落下帷幕,很多新变化值得回味。 尽管天气在变凉,但市场出现了逐渐回暖的迹象。在此背景下,大量商家特别关心如何在双11打一场漂亮的胜仗。 卖方如何行动,关键在于买方的变化。在阿里妈妈发布的《…...
内网可达网段探测netspy- Mac环境
netspy是一款快速探测内网可达网段工具 当我们进入内网后想要扩大战果,那我们可能首先想知道当前主机能通哪些内网段。 netspy正是一款应用而生的小工具,体积较小,速度极快,支持跨平台,支持多种协议探测,…...
Liunx命令汇总
一.用户相关命令 1.1账号管理 创建用户: useradd (选项) 用户名用户口令: passwd (选项) 用户名修改用户: usermod 选项 用户名删除用户: userdel (选项) 用…...
自动控制原理--面试问答题
以下文中的,例如 s_1 为 s下角标1。面试加油! 控制系统的三要素:稳准快。稳,系统最后不能震荡、发散,一定要收敛于某一个值;快,能够迅速达到系统的预设值;准,最后稳态值…...
ThinkPHP 8+redis的生命周期的庖丁解牛
它的本质是:PHP 进程(客户端)通过 TCP 套接字与 Redis 守护进程(服务端)建立连接,发送基于 RESP 协议的指令,接收二进制响应,并将结果映射回 PHP 变量的全过程。在 TP8 中࿰…...
如何快速掌握PlugY:暗黑破坏神2单机玩家的终极生存指南
如何快速掌握PlugY:暗黑破坏神2单机玩家的终极生存指南 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 你是否曾经因为暗黑破坏神2原版储物箱太小而不得不…...
轻松修复Kindle电子书封面,让你的图书馆重焕生机
轻松修复Kindle电子书封面,让你的图书馆重焕生机 【免费下载链接】Fix-Kindle-Ebook-Cover A tool to fix damaged cover of Kindle ebook. 项目地址: https://gitcode.com/gh_mirrors/fi/Fix-Kindle-Ebook-Cover 你是否曾经遇到过这样的困扰:Kin…...
OpenClaw+gemma-3-12b-it:自动化周报生成与邮件发送实战
OpenClawgemma-3-12b-it:自动化周报生成与邮件发送实战 1. 为什么需要自动化周报处理? 每周五下午,我的日历总会准时弹出"编写周报"的提醒。作为技术从业者,明明每天都在GitHub提交代码、在Jira更新任务状态、在飞书讨…...
Qwen3-14B-INT4-AWQ开发基础:GitHub使用教程与团队协作规范
Qwen3-14B-INT4-AWQ开发基础:GitHub使用教程与团队协作规范 1. 为什么AI开发者需要掌握GitHub 在AI项目开发中,代码管理往往是最容易被忽视的环节。想象一下这样的场景:你和团队花了三个月训练Qwen3-14B-INT4-AWQ模型,突然发现上…...
深度学习项目训练环境生产环境:支持持续训练、断点续训、多卡DDP扩展
深度学习项目训练环境生产环境:支持持续训练、断点续训、多卡DDP扩展 1. 环境概览与核心优势 深度学习项目训练环境是专门为机器学习开发者打造的一站式解决方案。这个环境基于深度学习项目改进与实战专栏精心配置,预装了完整的开发套件,让…...
从“人海战术”到“算法军团”:TVA引发的劳动力革命(4)
——岗位重构:TVA时代,制造业劳动力的岗位迭代与技能升级TVA“算法军团”的普及,不仅替代了传统的体力型、重复型劳动力,更引发了制造业岗位体系的颠覆性重构——大量传统岗位被淘汰,一批全新岗位应运而生,…...
OpenClaw环境迁移:千问3.5-9B配置跨设备同步方案
OpenClaw环境迁移:千问3.5-9B配置跨设备同步方案 1. 为什么需要环境迁移 上周我的主力开发机突然硬盘故障,导致所有OpenClaw配置和千问3.5-9B模型参数丢失。这个意外让我意识到:在本地AI工作流中,环境迁移能力不是锦上添花&…...
实时行情系统设计:从协议选择到高可用架构,再到数据源选型睬
一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...
腾讯后端开发面经:一面 3 道算法压 30 分钟,二面开始全是场景题
腾讯后端开发面经:一面 3 道算法压 30 分钟,二面开始全是场景题 腾讯后端的面试,压强来得很快。 很多公司的节奏是:先聊项目,再问八股,最后来一道算法题。 腾讯不是。 这次整理到的一份真实面经里&#…...
