博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qt 自定义窗口绘制正弦曲线
阅读量:7053 次
发布时间:2019-06-28

本文共 1933 字,大约阅读时间需要 6 分钟。

circlewidget.h

#ifndef CIRCLAWIDGET_H#define CIRCLAWIDGET_H#include 
#include
#include
class CircleWidget:public QFrame{ Q_OBJECTpublic: CircleWidget(QWidget *parent); ~CircleWidget();private: void paintEvent(QPaintEvent *event);public: void Adjust(int period, int grain, int radius); QPoint origin(); // 坐标原点位置 QPoint toCoord(QPoint p); // 将GUI窗口的点(x,y)转换成坐标系统里的点 QPoint fromCoord(QPoint p); // 将坐标系内的(x,y)转成GUI的坐标private: int m_period, m_grain, m_radius;};#endif // CIRCLAWIDGET_H

circlewidget.cpp

# include"circlewidget.h"#include
#include
#include
CircleWidget::CircleWidget(QWidget *parent):QFrame(parent){ m_period = 20; //周期 m_grain = 1; //粒度 m_radius = 10; // 振幅}CircleWidget::~CircleWidget(){}void CircleWidget::paintEvent(QPaintEvent *event){ QPainter painter(this); int width = this->width(); int height = this->height(); QRect rect(0,0, width, height); // 设置背景为黑色 painter.setBrush(QBrush(QColor(0x00,0x00, 0x00))); painter.drawRect(rect); painter.setPen(QPen(QColor(0, 255, 0))); // 设置线条为绿色 QPoint o = origin(); painter.drawLine(QPoint(0, o.y()), QPoint(width, o.y())); // x轴 painter.drawLine(QPoint(o.x(), 0), QPoint(o.x(), height));// y轴 // 正弦曲线: 从坐标原点,向左、向右伸展 QPoint p1(0,0); for(int x=0; x
rect(); return r.center();}// 将GUI窗口的点(x,y)转换成数学坐标系统里的点QPoint CircleWidget::toCoord(QPoint p){ // 圆心 QPoint o = this->origin(); QPoint result = p - o; result.setY(0 - result.y()); // y坐标反转 return result;}// 将数学坐标系内的(x,y)转成GUI的坐标QPoint CircleWidget::fromCoord(QPoint p){ // 圆心 QPoint o = this->origin(); p.setY(0 - p.y()); // y坐标反转 return p + o;}

结果:

转载于:https://www.cnblogs.com/fuhang/p/9901091.html

你可能感兴趣的文章
这辈子最有先见之明的一个设计
查看>>
vue分页
查看>>
控件拉伸(转)
查看>>
我的友情链接
查看>>
Whats new in openstack juno
查看>>
个人网站创业一年的悲惨经历分享
查看>>
学习笔记之urllib篇
查看>>
python练习-for range if continue
查看>>
7.28_Linux_ext数据结构inode的原理浅析、软硬链接的区别
查看>>
挂号网 牛B
查看>>
如何实现一个按周递增的序列
查看>>
SAP公司联席CEO Bill McDermott先生的至理名言:“我们要保持饥饿感和谦逊的态度。”...
查看>>
openssl crl2pkcs7 使用方法
查看>>
Apache Spark探秘:实现Map-side Join和Reduce-side Join
查看>>
【Docker学习笔记(六)】快速搭建Java Web应用
查看>>
SpringBoot RabbitMQ 集成 五 "Topics"
查看>>
Virtual SAN 读取 IO – 缓存/缓冲区/磁盘心轴
查看>>
AS3学习笔记(三)XML解析
查看>>
linux shell中所有括号的用法
查看>>
etcd v2文档(4) -- 客户端http请求管理etcd 版本号和节点状态
查看>>