1.IDE:QTCreator
2.实验:绘制曲线图表
3.记录:
4.代码
pro
QT += core gui
#加入以下代码引入charts
QT +=charts
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//加入以下两行代码
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
//创建私有曲线
private:
QChartView *chartview;
QChart *chart;
void CreateChartFunc(); //创建图表的函数
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("图表案例分析");
CreateChartFunc(); //调用此函数实现图表绘制功能
}
MainWindow::~MainWindow()
{
delete ui;
}
//创建图表函数
void MainWindow::CreateChartFunc()
{
//创建图表
chartview=new QChartView(this);
chart=new QChart();
chart->setTitle("sin()/cos()图表测试");
chartview->setChart(chart); //添加chart到chartview库
this->setCentralWidget(chartview);
//创建曲线序列
QLineSeries *series1=new QLineSeries();
QLineSeries *series2=new QLineSeries();
series1->setName("sin曲线");
series2->setName("cos曲线");
chart->addSeries(series1);
chart->addSeries(series2);
//通过序列添加数值
qreal t=0,y1,y2,intv=0.1;
for(int i=0;i<100;i++)
{
y1=qSin(t);
series1->append(t,y1);
y2=qCos(t);
series2->append(t,y2);
t=t+intv;
}
//创建坐标轴
QValueAxis *axisX=new QValueAxis(); //X轴
axisX->setRange(0,10);
axisX->setTitleText("time(secs)");
QValueAxis *axisY=new QValueAxis(); //Y轴
axisY->setRange(-2,2);
axisY->setTitleText("values");
chart->setAxisX(axisX,series1);
chart->setAxisY(axisY,series1);
chart->setAxisX(axisX,series2);
chart->setAxisY(axisY,series2);
}