当前位置: 首页 > news >正文

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点

  • 功能介绍
  • 头文件
  • C文件
  • 运行过程

功能介绍

上面的代码实现了一个简单的 Qt 应用程序,其功能包括:

  1. 创建一个 MainWindow 类,继承自 QMainWindow,作为应用程序的主窗口。

  2. 在主窗口中添加了一个图表 (QChart) 和一个图表视图 (QChartView),用于显示图表内容。

  3. 在图表中添加了一个线系列 (QLineSeries),用于绘制数据点。

  4. 设置了图表的 X 轴和 Y 轴范围、颜色和标题。

  5. 使用 QTimer 创建了一个定时器,每隔5秒触发一次 addPoint() 槽函数。

  6. addPoint() 槽函数中,生成了一个随机的 x 坐标和 y 坐标,并将它们添加到线系列中,以实现动态添加点的效果。

头文件

// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QtCharts>
#include <QChartView>
#include <QSplineSeries>
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void addPoint();private:Ui::MainWindow *ui;QTimer *timer;QLineSeries *series1;QChart *chart;
};#endif // MAINWINDOW_H

C文件

// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRandomGenerator>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QValueAxis *xAxis = new QValueAxis();xAxis->setRange(-10, 10);xAxis->setLabelsColor(QColor(255, 0, 0));xAxis->setTitleText("X");QValueAxis *yAxis = new QValueAxis();yAxis->setRange(-10, 10);yAxis->setLabelsColor(QColor(255,0, 0));yAxis->setTitleText("Y");series1 = new QLineSeries();chart = new QChart();chart->legend()->hide();chart->addSeries(series1);chart->createDefaultAxes();chart->setTitle(" www ");chart->addAxis(xAxis, Qt::AlignBottom);chart->addAxis(yAxis, Qt::AlignLeft);series1->attachAxis(xAxis);series1->attachAxis(yAxis);series1->setColor(QColor(255, 0, 0));series1->setUseOpenGL();QChartView *chartView = new QChartView(chart);chartView->setChart(chart);chartView->setRubberBand(QChartView::RectangleRubberBand);chartView->setRenderHint(QPainter::Antialiasing,true);this->setCentralWidget(chartView);// 设置定时器timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(addPoint()));timer->start(1000); // 每隔5秒触发timeout()信号
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::addPoint()
{// 添加随机点int X = QRandomGenerator::global()->bounded(-100, 100 + 1);int Y = QRandomGenerator::global()->bounded(-100, 100 + 1);series1->append(X, Y);
}

运行过程

在这里插入图片描述

相关文章:

  • [AIGC] MySQL存储引擎详解
  • 每日一练:LeeCode-350. 两个数组的交集 II【数组+哈希表】
  • 【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024)
  • 生产调度问题分类——约束视角
  • 如何通过主数据管理开启数据治理
  • 1+x中级题目练习复盘(20220917 1+X 中级理论考试20221023 1+X 中级理论考试20221119 1+X 中级理论考试)
  • Jenkins常用插件安装及全局配置
  • springcloud第4季 负载均衡的介绍3
  • 使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码
  • python内置函数 V
  • ReentrantLock 原理
  • vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程
  • ip地址开发场景问题
  • 若依分离版 —引入echart连接Springboot后端
  • 南京观海微电子---Vitis HLS的工作机制——Vitis HLS教程
  • SegmentFault for Android 3.0 发布
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Joomla 2.x, 3.x useful code cheatsheet
  • LintCode 31. partitionArray 数组划分
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • QQ浏览器x5内核的兼容性问题
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 不上全站https的网站你们就等着被恶心死吧
  • 订阅Forge Viewer所有的事件
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 翻译:Hystrix - How To Use
  • 高程读书笔记 第六章 面向对象程序设计
  • 京东美团研发面经
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端攻城师
  • 前端知识点整理(待续)
  • 区块链共识机制优缺点对比都是什么
  • 微信小程序--------语音识别(前端自己也能玩)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 字符串匹配基础上
  • AI算硅基生命吗,为什么?
  • HanLP分词命名实体提取详解
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #QT(串口助手-界面)
  • $.ajax()
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Core中的去虚
  • .net framework profiles /.net framework 配置
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET开发人员必知的八个网站
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @Not - Empty-Null-Blank