基于Qt4开发曲线绘制交互软件Plotter

2023-09-14 00:34:52

目前市面上有很多曲线绘制软件,但其交互功能较差。比如,想要实现数据的交互,同步联动等,都需要大量繁琐的人工操作。所以讲想开发一款轻量级的曲线绘制交互软件。下面就以此为案例,记录一下基于Qt4的开发过程。

目录

1 需求

2 技术路线

3 开发流程

1 框架搭建

2 菜单

3 数据改动和右键菜单

4 阶段性测试

5 多条曲线问题

6 颜色和风格设置

7 绘图的清空

8 数据的同步联动

9 数据平移

3 成品效果

4 结语


1 需求

  • 1 通过打开csv文件的方式导入数据。
  • 2 右键单击数据列,可添加曲线,还可指定横轴。
  • 3 能同步联动表格和曲线,完成修改工作。
  • 4 能识别修改状态,修改后能保存。
  • 5 可实现数据平移。
  • 6 可实现点和线两类绘图方式,可指定颜色。

2 技术路线

有了之前的开发经验,这个开发就很得心应手了。首先就是用tableview实现表格,用qcustomplot来绘图就行。关键是把文件读入进来。

3 开发流程

1 框架搭建

首先新建main window工程,并引入QCustomPlot.

用UI设计器设计界面,这个界面要简洁,只有表格和绘图区。没有多余的交互控件。

2 菜单

文件菜单有打开,保存即可。无需新建。其中,读写csv是相对独立的模块,可单独写为函数。


// 打开
void MainWindow::on_actionOpen_triggered()
{
    QString tmpName = QFileDialog::getOpenFileName(this,"Open","","*.csv");
    if(tmpName.isEmpty())
        return;
    fileName = tmpName;

    if(!readcsv(fileName))
        QMessageBox::information(this,"Error","file read fail.");

    setWindowTitle(winName+" - &
更多推荐

【leetcode】 数组二分查找

【leetcode】数组二分查找1.二分查找二分查找(BinarySearch),也称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的基本思想是不断将待查找区间缩小一半,直到找到目标元素或确定目标元素不在数组中为止。这种查找方法比线性查找效率高,因为它可以快速排除掉大部分不可能包含目标元素的区间,从而减少了比

字符函数和字符串函数(C语言进阶)

字符函数和字符串函数一.求字符串长度1.strlen二.长度不受限制的字符串函数介绍1.strcpy2.strcat3.strcmp前言C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数一.求字符串长度1.str

FPGA project : DS18B20

本想着一天发一个实验的,这个ds18b20,耗时两天。代码写了两次,呜呜~由于第二次写代码没画时序图,所以代码和时序图一些参数有些不一致,但问题不大。这里有几件事情值得一提:1:关于状态机的编写,我觉得还是三段式比较好。2:关于生成其他时钟信号,用来做触发边沿。我不喜欢用这种方法(提一个概念“全局时钟网络”)。所以用产

heic图片如何转为jpg格式

  heic图片如何转为jpg格式?现阶段,在技术水平不断完善的基础上,图片质量越来越好了,且图片数量也越来越多。图片内容不断丰富,导致图片格式愈发多样化。为了能够保证图片的有效应用,我们有的时候需要将图片格式进行转换。例如,我们可能会遇到将HEIC格式转换为JPG格式的问题,提高图片的利用率。在进

Hive部署,hive客户端

1、Hive部署Hive是分布式运行的框架还是单机运行的?Hive是单机工具,只需要部署在一台服务器即可。Hive虽然是单机的,但是它可以提交分布式运行的MapReduce程序运行。1.1、规划我们知道Hive是单机工具后,就需要准备一台服务器供Hive使用即可。同时Hive需要使用元数据服务,即需要提供一个关系型数据

FPGA板卡启动以及LED灯带调试

环境配置软件:MobaXterm(free版本即可)下载教程参考:MobaXterm(终端工具)下载&安装&使用教程_蜗牛也不慢......的博客-CSDN博客Win32Disklmager下载教程参考:不分类工具:Win32DiskImager安装教程_win32disklmager安装教程_月挽的博客-CSDN博客

【计算机网络】——传输层

//图片取自王道,仅做交流学习一、传输层提供的服务物理层、数据链路层、网络层是通信子网。传输层:它属于面向通信部分的最高层,同时也是用户功能的最低层为应用层提供通信服务使用网络层的服务网络层提供主机之间的逻辑通信。1、传输层的功能:1.传输层提供进程和进程之间的逻辑通信(即端到端通信)。网络层提供的主机到主机之间的通信

交叉编译错误:小心符号链接

交叉编译在进行到链接环节时出现找不到库文件的错误,如下:一般来说,链接时出现库查找不到则需要将库路径添加到link_directories或者target_link_directories,这里说查找不到libblas.so.3和liblapack.so.3,那么查找这两个库的路径后发现,这个库路径是实实在在的添加到了

Hadoop知识点之Hadoop发展历程

一、Hadoop名字的起源Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者,DougCutting如此解释Hadoop:这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。Googol就是由小孩命名的。二、H

spring-boot---validation,参数校验,分组,嵌套,各种类型

写在前面:参数校验基本上是controller必做的事情,毕竟前端传过来的一切都不可信。但是每次if(StrUtil.isNotNull())啥的有时候多还难写。validation可以简化这一操作。文章目录项目构建问题展示validation使用快速入门注释Valid与Validated区别使用范围分组嵌套验证项目构

基于微信小程序的实验室预约管理系统设计与实现

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

热文推荐