Qt绘制折线
#include <QApplication> #include <QtCharts/QChartView> #include <QtCharts/QLineSeries> #include <QtCharts/QValueAxis> #include <QFont> #include <QToolTip> #include <cmath> QT_CHARTS_USE_NAMESPACE int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建图表框架 QChartView *chartView = new QChartView; QChart *chart = new QChart(); chart->setTitle(u8"多组数据折线图示例"); QFont titleFont("Arial", 14, QFont::Bold); chart->setTitleFont(titleFont); chartView->setChart(chart); // 创建第一组折线序列 QLineSeries *series0 = new QLineSeries(); series0->setName(u8"Sin曲线"); chart->addSeries(series0); // 为第一组序列添加数据点 for (double i = 0; i < 10; i=i+0.1) { qreal t = i; qreal y1 = std::sin(t * 0.5) * 10; series0->append(t, y1); } // 创建第二组折线序列 QLineSeries *series1 = new QLineSeries(); series1->setName(u8"Cos曲线"); chart->addSeries(series1); // 为第二组序列添加数据点 for (double i = 0; i < 10; i = i + 0.1) { qreal t = i; qreal y2 = std::cos(t * 0.5) * 10; series1->append(t, y2); } // 创建第三组折线序列 QLineSeries *series3 = new QLineSeries(); series3->setName(u8"Cos曲线"); chart->addSeries(series3); // 为第二组序列添加数据点 for (double i = 0; i < 10; i = i + 0.1) { qreal t = i; qreal y2 = std::cos(t * 0.5) * 5; series3->append(t, y2); } // 创建坐标轴 QValueAxis *axisX = new QValueAxis; axisX->setRange(0, 10); axisX->setTitleText("time (secs)"); QValueAxis *axisY = new QValueAxis; axisY->setRange(-15, 15); axisY->setTitleText("value"); // 为序列设置坐标轴 chart->setAxisX(axisX, series0); chart->setAxisY(axisY, series0); chart->setAxisX(axisX, series1); chart->setAxisY(axisY, series1); chart->setAxisX(axisX, series3); chart->setAxisY(axisY, series3); // QObject::connect(series0, &QLineSeries::hovered, [](const QPointF &point, bool state) { if (state) { QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y())); } else { QToolTip::hideText(); } }); // QObject::connect(series1, &QLineSeries::hovered, [](const QPointF &point, bool state) { if (state) { QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y())); } else { QToolTip::hideText(); } }); // QObject::connect(series3, &QLineSeries::hovered, [](const QPointF &point, bool state) { if (state) { QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y())); } else { QToolTip::hideText(); } }); // // 设置图表主题和图例 chart->setTheme(QChart::ChartThemeBlueCerulean); chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom); // 显示图表 chartView->setRenderHint(QPainter::Antialiasing); chartView->resize(800, 600); chartView->show(); return a.exec(); }

###############################
QQ 3087438119

浙公网安备 33010602011771号