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

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

功能介绍

上面的代码实现了一个简单的 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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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);
}

运行过程

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 02:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 02:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 02:36:02       82 阅读
  4. Python语言-面向对象

    2024-03-28 02:36:02       91 阅读

热门阅读

  1. Redis 教程系列之Redis 数据类型(四)

    2024-03-28 02:36:02       40 阅读
  2. 嵌入式学习笔记(一)

    2024-03-28 02:36:02       40 阅读
  3. AI大模型学习的理论基础

    2024-03-28 02:36:02       44 阅读
  4. c++的标准库

    2024-03-28 02:36:02       35 阅读
  5. Linux查看命令历史

    2024-03-28 02:36:02       41 阅读
  6. Leetcode225_用队列实现栈

    2024-03-28 02:36:02       42 阅读
  7. J o e r n启动!Boom Boom Boom

    2024-03-28 02:36:02       34 阅读
  8. python数据转换

    2024-03-28 02:36:02       37 阅读
  9. docker构建镜像时可能会用到的自启动命令

    2024-03-28 02:36:02       38 阅读
  10. WSL+Ununtu+Docker踩坑指南

    2024-03-28 02:36:02       38 阅读
  11. 【Python】定时更换clashx工具

    2024-03-28 02:36:02       47 阅读
  12. C语言学习笔记day15

    2024-03-28 02:36:02       42 阅读
  13. 116道网络安全面试题目总结

    2024-03-28 02:36:02       39 阅读