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

news2024/11/20 22:41:22

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酷开系统——酷开科技挖掘下沉市场的重要利器

纵观整个互联网的发展历程,我们经历从搜索时代到电子商务时代,再从社交网络时代到近几年兴起的兴趣网络时代。而在当下的兴趣网络时代,面对多元化、同质化的产品,价值文化成为品牌和消费者建立连接的关键。目前,互联网…

15W SIP网络有源吸顶喇叭

SV-7042VP 15W SIP网络有源吸顶喇叭 一、描述 SV-7042VP是我司的一款SIP网络有源吸顶喇叭,具有10/100M以太网接口,内置有一个高品质扬声器,将网络音源通过自带的功放和喇叭输出播放,可达到功率15W。SV-7042VP作为SIP系统的播放终…

【CSS3】

文章目录 1.简介2.边框3.圆角4.背景5.渐变CSS3 径向渐变6.文本效果7.字体8.2D转换9.3D转换10.过渡11.动画12.多列13.用户界面14.按钮 ​ 1.简介 模块 CSS3 被拆分为"模块"。旧规范已拆分成小块,还增加了新的。 一些最重要 CSS3 模块如下: 选…

Qt 围炉札记

文章目录 一、Qt 调试 一、Qt 调试 【Qt调试技巧】Profile配置使用及一些坑 QT运行时的Debug、Release、Profile选项区别 Qt Creator release版本进行调试 【Qt调试技巧】如何在Release下调试Qt程序? Qt如何在Release编译下怎么调试?怎么生成pdb文件…

SwiftUI 中的几种毛玻璃效果

Preview Code // // testtt.swift // bill2 // // Created by 朱洪苇 on 2023/8/9. //import SwiftUIstruct testtt: View {var body: some View {ZStack {Image("bg1").blur(radius: 5) // 给背景图加模糊VStack {Text("ultraThinMaterial").padding()…

Mysql InnoDB引擎 的hash索引

Mysql InnoDB引擎不支持hash索引,但是在内存结构中有一个自适应hash索引,来提高查询性能 当设置hash索引时会自动转换成btree索引 查一下mysql官方文档:https://dev.mysql.com/doc/refman/5.7/en/create-index.html innodb_adaptive_hash_i…

ubuntu18、20 cv_bridge 与自带opencv版本冲突问题

背景: nvidia tx2、xvaier 装机自带 ubuntu18 opencv4 后来我们会安装melodic的ros,ros中的cv_bridge 默认cv版本是3.2.0 编译带cv_bridge的代码时,会报错会崩溃,因为版本冲突了 为了解决该问题, 行之有效的一种…

uniapp-提现功能(demo)

页面布局 提现页面 有一个输入框 一个提现按钮 一段提现全部的文字 首先用v-model 和data内的数据双向绑定 输入框逻辑分析 输入框的逻辑 为了符合日常输出 所以要对输入框加一些条件限制 因为是提现 所以对输入的字符做筛选,只允许出现小数点和数字 这里用正则实现的小数点…

Boostrap对HTML的表格的设计和优化

目录 01-Bootstrap的默认表格风格02-没有边线-边界的表格03-行与行的背景颜色交替变换(条纹样式)04-给表格加上边框效果05-鼠标移到行上时该行的颜色加深06-把表格的padding值缩减一半,使表格看起来更紧凑07-为表格的行或单元格设置颜色 01-Bootstrap的默认表格风格 Bootstrap…

手机上的动态ip流量是算自己的流量吗?

正抓着手机的小伙伴们,大家好呀!我们都知道,在手机上设置动态ip可以帮助我们访问被限制的网站和保护我们的隐私。但是,有一个让人困惑的问题一直困扰着大家:手机上使用动态ip时,这个流量算不算我们自己的流…

【css案例】

三,案例 1.小米侧边栏 编辑 编辑 2.五彩导航 编辑 编辑 3. 编辑 编辑 4.小米布局编辑 编辑 编辑 5.淘宝焦点图 编辑 ![img](https://img-blog.csdnimg.cn/d067c55c445e4cccb13f23076d6331f8.png编辑 编辑 6.土豆网遮罩 编辑 编辑 7.旋转案例 编辑…

css自学框架之图片懒加载

首先解释一下什么叫图片懒加载。图片懒加载是一种在页面加载时,延迟加载图片资源的技术,也就是说图片资源在需要的时候才会加载,就是在屏幕显示范围内加载图片,屏幕显示范围外图片不加载。 一、关键函数 用到的关键函数&#xf…

Pinctrl子系统_02_使用Pinctrl要掌握的重要概念

本节说明使用Pinctrl子系统时,要掌握的重要概念。 上节我们说到,我们通过Pinctrl子系统来控制设备的引脚,但实际上,大多数芯片都没有一个单独的Pinctrl。引脚的复用、配置等操作,实际上是在GPIO子系统内部实现的。 但…

Centos nginx配置文档

1、安装nginx: yum install nginx 2、Nginx常用命令 查看版本:nginx -v 启动:nginx -c /etc/nginx/nginx.conf 重新加载配置:nginx -s reload 停止:nginx -s stop 3、Nginx反向代理配置 nginx配置详解 1、Nginx配置图 详情可以查看:http://nginx.org/ru/docs/example…

ES6 什么是模板字符串?

模板字符串是一种在编程中用于创建字符串的特殊语法形式,通常用于动态生成包含变量或表达式的文本。它们在许多编程语言中都有类似的实现,但语法可能会有所不同。 在JavaScript中,模板字符串是由反引号 (backtick) 包围的字符串&#xff0c…

Python 环境搭建,集成开发环境IDE: PyCharm

Python 环境搭建,集成开发环境IDE: PyCharm 一、Python 环境搭建二、Python下载三、Python安装四、环境变量配置五、Python 环境变量六、运行Python1、交互式解释器:2、命令行脚本3、集成开发环境(IDE:Integrated Development Environment&am…

day13面向对象进阶

面向对象进阶部分学习方法: 特点: ​ 逻辑性没有那么强,但是概念会比较多。 ​ 记忆部分重要的概念,理解课堂上讲解的需要大家掌握的概念,多多练习代码。 day13 今日内容 复习回顾static关键字继承 教学目标 能…

《中国数字经济发展指数报告(2023年)》发布

导读 国家统计局《数字经济及其核心产业统计分类(2021)》首次对数字经济及其核心产业统计分类做出详细说明。然而,由于数字经济内涵外延的不断丰富,区域数字经济发展的量化评估仍在持续发展的过程中,以量化模型方式能够更加客观全面反映新时…

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…

MyVector 的实现

myVector #include <iostream> #include <vector>int size20;using namespace std;template <typename type> class myvector {int size;type value;type *arr;public://无参构造myvector(){};//有参构造myvector(int s,type v):size(s),value(v){arrnew in…