免費(fèi)做封面的網(wǎng)站新聞稿件
QT 二維坐標(biāo)系顯示坐標(biāo)點(diǎn)及點(diǎn)與點(diǎn)的連線-通過定時(shí)器自動(dòng)添加隨機(jī)數(shù)據(jù)點(diǎn)
- 功能介紹
- 頭文件
- C文件
- 運(yùn)行過程
功能介紹
上面的代碼實(shí)現(xiàn)了一個(gè)簡單的 Qt 應(yīng)用程序,其功能包括:
-
創(chuàng)建一個(gè)
MainWindow
類,繼承自QMainWindow
,作為應(yīng)用程序的主窗口。 -
在主窗口中添加了一個(gè)圖表 (
QChart
) 和一個(gè)圖表視圖 (QChartView
),用于顯示圖表內(nèi)容。 -
在圖表中添加了一個(gè)線系列 (
QLineSeries
),用于繪制數(shù)據(jù)點(diǎn)。 -
設(shè)置了圖表的 X 軸和 Y 軸范圍、顏色和標(biāo)題。
-
使用
QTimer
創(chuàng)建了一個(gè)定時(shí)器,每隔5秒觸發(fā)一次addPoint()
槽函數(shù)。 -
在
addPoint()
槽函數(shù)中,生成了一個(gè)隨機(jī)的 x 坐標(biāo)和 y 坐標(biāo),并將它們添加到線系列中,以實(shí)現(xiàn)動(dòng)態(tài)添加點(diǎn)的效果。
頭文件
// 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);// 設(shè)置定時(shí)器timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(addPoint()));timer->start(1000); // 每隔5秒觸發(fā)timeout()信號(hào)
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::addPoint()
{// 添加隨機(jī)點(diǎn)int X = QRandomGenerator::global()->bounded(-100, 100 + 1);int Y = QRandomGenerator::global()->bounded(-100, 100 + 1);series1->append(X, Y);
}